Calocybe: open()

Beitrag lesen

Hi Leut's!

win = window.open(Ziel,"Zweitfenster","resizable=1,scrollbars=1,width=280,height=450,screenX=0,screenY=0,left=0,top=0");
if (win != null)
if (win.closed);
win.focus();

Aeh, hast Du das ausprobiert? Das was dort steht, macht einfach IMMER ein win.focus(). Die if-Abfragen schliesst Du naemlich einfach mit einem ; ab, d.h. selbst wenn die Abfragen alle true ergeben, passiert nichts, denn da steht ja nichts, was passieren soll. Beim ; ist die Anweisung zu Ende.

Wahrscheinlich hast Du eher sowas gemeint:
    if (win != null)                   // kuerzer: if (win)
        if (!win.closed)
            win.focus();

if (win != null)   bzw.  if (win)  ergibt immer true, da Du ja gerade das Fenster aufgemacht hast und das window-Objekt an win zugewiesen hast. Du kannst es also ganz weglassen.
Wenn sich das Fenster nicht augenblicklich wieder selber schliesst, ergibt auch if(!win.closed) immer true. Kannst Du also auch weglassen. Damit waeren wir dann wieder am Anfang. Du fuehrst das focus() *immer* aus.

Warum gab es nun diesen Fehler in Zeile 19 in Patrick's Script? (Es muss nicht das focus() gewesen sein, denn die open()-Anweisung stand in derselben Zeile.)

Protokoll = self.location.protocol;
Pfad = self.location.pathname;
Basis = Protokoll + '//' + Pfad.substring(1,Pfad.length-11)
wintwo = null;

function machauf(Ziel)

»»  {

if (wintwo != null)
     if (!wintwo.closed)
       wintwo.close();

»»  opp = window.open(Ziel,"wintwo","resizable=1,scrollbars=1,width=280,height=450,screenX=0,screenY=0,left=0,top=0"); opp.focus();
»»  }

Ich schaetze, das kunterbunte Treiben der Variablen- und Fensternamen hat den Browser dann doch etwas verwirrt. Denn erst wird mit wintwo = null; eine Variable wintwo definiert. Dann wird bei window.open ein Fenster mit diesem Namen gebaut. Von Antje haben wir gelernt (<../../sfarchiv/1999_3/t06448.htm#a31588>), dass dadurch unterhalb von des window-Objekts automatisch eine Variable wintwo angelegt werden will. Aber da gibt es jetzt schon eine, denn es wurde eine mit dem Wert null angelegt. Na gut, warum dann das focus() schiefgehen soll, weiss ich auch nicht. Aber vielleicht ist ja schon das open() schiefgegangen (logischer waer's jedenfalls). Wurde denn ueberhaupt ein neues Fenster aufgemacht? Ich schlage jedenfalls vor, erstmal fuer alles eindeutige Namen festzulegen.

Protokoll = self.location.protocol;
    Pfad = self.location.pathname;
    Basis = Protokoll + '//' + Pfad.substring(1,Pfad.length-11)
    wintwo = null;

function machauf(Ziel) {
       if (wintwo != null)
         if (!wintwo.closed)
           wintwo.close();

wintwo = window.open(Ziel, "wintwofenster", "resizable=1,scrollbars=1,width=280,height=450,screenX=0,screenY=0,left=0,top=0");
        if (wintwo.focus) wintwo.focus();       // aeltere Browser (vor JS1.2) ausschliessen
    }

Ok, versucht das mal, vielleicht hilft's.

Bye, Calocybe