pit: IE und Fenster schließen. Was ist falsch??

Hallochen Forumler,

ich habe wieder einmal einen merkwürdigen Effekt. Folgendes Script regelt das Schließen auch des Fensters, das von dieser Seite aus geöffnet wurde. (Im Netscape nicht nötig, da dort dependent=yes das regelt.)  Die Seite selber steht in einem Frameset, deshalb parent.frames.close und nicht self.close . Zur Sicherheit hier auch die Zeile, die das Fenster öffnet.

function starthilfe(){
hilfe=window.open("http://wasweissich/hilfe_index.htm","Hilfe","toolbar=no,menubar=no,scrollbars=yes,height=740,width=400,dependent=yes,status=no,screenX=611,screenY=0");
}

function fensterzu(){
   if(navigator.appName != "Netscape"){
     if(hilfe.closed != true){hilfe.close();}
     parent.frames.close();
   }
   else {parent.frames.close();}
}

Nun zum funktionieren. Wenn ich ein Hilfefenster geöffnet habe ist alles in Butter. Ohne das offene Hilfefenster bleibt das Script in der if(hilfe.closed !=true) Zeile stecken. Alle eingefügten Ausschriften nach der Bedingung wurden nicht mehr ausgeführt.
Kommentiere ich die  if(hilfe.closed !=true) Zeile aus, geht das Fenster zu. Aber halt nur dieses.
Was ist falsch? Wenn das Hilfe-Fenster nicht geöffnet ist, ist if(hilfe.closed !=true) zwar wahr , aber wird {hilfe.close();} mangels Masse ignoriert oder nicht?

Chiau  und Danke Pit

  1. Hallo,

    vielleicht existiert hilfe nicht, wenn Hilfe geschlossen wurde oder hat keine Eigenschaft o.ä..
    Evtl. if(hilfe) oder if(Hilfe) abfagen...

    Grüsse,
    Kristof

    1. Hallo,

      vielleicht existiert hilfe nicht, wenn Hilfe geschlossen wurde oder hat keine Eigenschaft o.ä..
      Evtl. if(hilfe) oder if(Hilfe) abfagen...

      Grüsse,
      Kristof

      Hab ich schon probiert, ging nicht. Wenn die Funktion starthilfe() nicht aufgerufen wurde, scheint das Objekt "hilfe" derart nichtexistent zu sein, das sogar ein solches abfragen zum Fehler führt.

      Chiau pit

  2. Hallo Pit,

    function starthilfe(){
    hilfe=window.open("http://wasweissich/hilfe_index.htm","Hilfe","toolbar=no,menubar=no,scrollbars=yes,height=740,width=400,dependent=yes,status=no,screenX=611,screenY=0");

    Es ist genau wie Kristof sagt.
    "hilfe" existiert nicht. Dieses Problem ist mir ausschliesslich von window.open (...) bekannt.

    Abhilfe kann man schaffen, indem man vor der Funktion selbst, die Funktion nochmal als Variable definiert. Also folgendermassen:

    var hilfe = window.open (hier das gleiche wie oben);
    hilfe.close(); <!-- weil es durch die Variable geoeffnet wird -->

    function starthilfe() {
    hilfe = window.open (wie oben);
    ...}

    Damit ist Dein Problem geloest.

    Aber Du hast dann ein neues. Durch das Erzeugen der Variablen wird das Fenster erstmal geöffnet, obwohl Du es zu dem Zeitpunkt noch gar nicht brauchst. Deshalb auch gleich danach hilfe.close();.
    Man sieht also mal kurz das Fenster, auch wenn es fix wieder geschlossen wird. Dafür kenne ich keine andere Loesung. Aber jedenfalls wird ihm dann "hilfe" bekannt sein.

    Viele Gruesse

    Beate Mielke

    1. Hallo Pit,

      function starthilfe(){
      hilfe=window.open("http://wasweissich/hilfe_index.htm","Hilfe","toolbar=no,menubar=no,scrollbars=yes,height=740,width=400,dependent=yes,status=no,screenX=611,screenY=0");

      Es ist genau wie Kristof sagt.
      "hilfe" existiert nicht. Dieses Problem ist mir ausschliesslich von window.open (...) bekannt.

      Abhilfe kann man schaffen, indem man vor der Funktion selbst, die Funktion nochmal als Variable definiert. Also folgendermassen:

      Aber Du hast dann ein neues. Durch das Erzeugen der Variablen wird das Fenster erstmal geöffnet, obwohl Du es zu dem Zeitpunkt noch gar nicht brauchst. Deshalb auch gleich danach hilfe.close();.
      Man sieht also mal kurz das Fenster, auch wenn es fix wieder geschlossen wird. Dafür kenne ich keine andere Loesung. Aber jedenfalls wird ihm dann "hilfe" bekannt sein.

      Viele Gruesse

      Beate Mielke

      Genauso ist es. Danke. Das erste Öffnen des Fenster kann man ja mit einer kleinen "Werbeeinblendung" kaschieren ;-) .

      pit