alain: nochma zum opener window-fehlermeldung IE

seit gegrüsst,

Ich hab da ein problem und zwar folgendes: Nehmen wir an ich öffne von einem haubtfenster ein zweit fenster per window.open dieses zweit fenster wird per refresh auf eine andere seite weitergeleitet, während das haubtfenster im hintergrund per onload von der weitergelteten seite wieder auf die haubtseite zurück geht ebenfalls im hintergrund bleibt. Nun das problem ist folgendes ,wenn die hintergrund seite nun nicht mehr existiert oder vom user bereits geschlossen wurde,dann gibts eine fehlermeldung. window.opener ist null oder kein objekt. Wie könnte man diesen befehl per if abfrage definieren?

Im Moment sieht diese javaform so aus:

function zurHaubtseite()

{ void(opener.location.href="http://www.haubtseite.de");opener.blur(); window.setTimeout("navi.close()",50000);};

das ist der onload befehl vom zweitfenster (oben).

das script könnte in etwa so aussehen: function zurHaubtseite()

if(opener.open == true){ void(opener.location.href="http://www.haubtseite.de");opener.blur(); else zweiteseite();window.setTimeout("navi.close()",50000);};

function zweiteseite()

navi = open("http://zweitseite.de","navi");

Das zweite problem wäre nun, dass in der zweiten seite der onload drin steht. Schönen gruss alain

  1. Diese script funtzt leider auch nicht
    Es geht einfach nur darum ob das haubtfenster da ist oder nicht,
    falls es da sein sollte ,sollte das zweit fenster geschlossen werden und die haubtseite
    soll zum anfang,falls es nicht da ist (bereits geschlossen) dann sollte das zweitfenster
    auf die haubtseite zurück.
    Und hier das script das aber zur zeit nicht funktioniert ausser den fehlermeldungen:

    function haubtseite()
    {
    var opener = "index.html";
    if(opener.closed == true){self.location.href="index.html";}
    else
    {opener.location.href="index.html";window.close();}};

    1. Hallo Alain

      function haubtseite()
      {
      var opener = "index.html";
      if(opener.closed == true){self.location.href="index.html";}
      else
      {opener.location.href="index.html";window.close();}};

      In diesem Zusammenhang ist opener eine Variable vom Typ String und kennt nicht die Eigenschaft closed.

      Ob der opener existiert bekommst du mittels if (opener) heraus.

      Hintergrund:

      opener ist eine Fenstereigenschaft, die auf ein Objekt zeigt. Existiert dieses Objekt nicht, so kannst du natürlich keine Eigenschaften des Objektes abfragen.
      Mit if (opener) prüfst du, ob in der Eigenschaft opener etwas anderes als null gespeichert ist. Erst wenn dies zutrifft, kannst du auf andere opener-Eigenschaften und Methoden zugreifen und diese ändern.

      Viele Grüße

      Antje

      1. hallo Antje
        danke für den tip,
        könnte man in dem fall mit if abfragen ob opener null ist und dann
        ein zweit bzw. dritt seite aufrufen?
        zum B.s.p so:
        also die funktion haubtseite() wird auf der zweiten seite per onload
        aufgerufen:

        function haubtseite(){
        if (opener){opener.location.href="http://haubtseite";
        setTimeout("window.close()",5000);}
        else if
        (opener == null);navi();window.close();};

        function navi()

        {

        navi = open("http://haubtseite","drittfenster");

        };

        1. so gehts

          function navi()

          {

          navi = window.open("zweitHAUBTseite.htm","navi");navi.blur();

          };

          function haubtseite(){
          var navigation = "haubtseite.htm";
          if (opener)opener.location.href="haubtseite.htm"
          else if
          (navigation)navi();
          else
          location.href="haubtseite.htm";setTimeout("window.close()",50000);};

          das drittfenster ging im fensternamen "navigation" (wie das zweitfenster auch)
           auf und lädt wieder die haubtseite im hintergrund von dem aus
          das zweit und drittfenster aufging.
          Wenn das haubtfenster in der zwischenzeit aber geschlossen wurde
          und nur noch das drittfenster da ist,muss das haubtfenster neu geladen werden
          (hintergrund)und das aktuelle fenster(drittfenster)
           schliessen nach ner gewissen zeit.
          So funtzt es
          gruss alain*derseitstundengrübelte*