Arthur Khessin: Body unLoad - nicht immer?

Guten Tag,
ich habe folgendes Problem:

wie bekannt ist es ja erlaubt einen zweiten BODY Tag mit weiteren Elementen zu haben. Doch es klappt irgendwie nicht immer.

In die Mitte meiner Homepage baue ich folgenden Code ein:

<body onUnload="if(top.location.href.indexOf('www.adexit.de/exit.php3')==-1){window.open('http://www.adexit.de/exit.php3?ID=71')};">

Dieser besagt, dass es beim Verlassen ein neues Fenster öffnen soll, und außerdem soll überprüft werden, dass sich dieser Script in dem geöffnetem Fenster nicht nochmal gestartet wird.

Doch immer wieder gibt es ein Problem damit. Auf Seiten wo Frames verwendet werden - wird der Code manchmal einfach ignoriert! Bei anderen Seiten wird er ausgeführt - doch nicht immer.

Kann mir jemand sagen was an dem Code falsch ist bzw. wann dieser funktioniert und vieleicht - nur mit welcher Browser Version?

Danke im Voraus,

Arthur Khessin.

  1. Hallo Arthur

    Ich bin mir zwar nicht sicher, ob es daran liegt, da ich das problem nicht reproduzieren konnte, aber
    es wäre eine plausible erklährung.
    Wenn die Seite verlassen wird, wird der browser von dem code dazu gezwungen eine seite zu laden obwohl
    der user eine andere eingegeben hat. daher geht es manchmal schief. außerdem nerft es den user
    da er die seite nicht verlassen kann.
    Öffne die seite besser in einem neuen fenster.
    Außerdem kann bei dieser lösung die seite keine links enthalten. wenn man auf ein link clickt wird
    onunload auch ausgeführt

    Tschüs

    Daniel

    1. Wie meinst du das in einem neuem Fenster?

      Gibt es denn überhaupt irgendein anderes Befehle das das gleiche macht?

      Hallo Arthur

      Ich bin mir zwar nicht sicher, ob es daran liegt, da ich das problem nicht reproduzieren konnte, aber
      es wäre eine plausible erklährung.
      Wenn die Seite verlassen wird, wird der browser von dem code dazu gezwungen eine seite zu laden obwohl
      der user eine andere eingegeben hat. daher geht es manchmal schief. außerdem nerft es den user
      da er die seite nicht verlassen kann.
      Öffne die seite besser in einem neuen fenster.
      Außerdem kann bei dieser lösung die seite keine links enthalten. wenn man auf ein link clickt wird
      onunload auch ausgeführt

      Tschüs

      Daniel

      1. Hallo Arthur

        Wie meinst du das in einem neuem Fenster?

        Statt mit top.location.href = "" zur entsprchenden Seite weiterzuleiten, kannst du mit
        window.open("url/to.html","winname","parameter") ein neues Browserfenster öffnen.

        Und das probelem mit den Links solltest du dir schon mal durch den Kopf gehen lassen.
        Wenn du onUnload ein neues Fenster öffneset, wird das auch gemacht, wenn man auf einen Link clickt.
        Mit deiner if-abfrage vermeidest du zwar rekursion, aber du solltest vieleicht auch abfragen ob die seite
        auf deinem Server leigt und nur wenn sie das nicht tut ein neues Fenster öffnen.

        Tschüs

        Daniel

  2. Hi Arthur,

    wie bekannt ist es ja erlaubt einen zweiten BODY Tag mit weiteren Elementen zu haben. Doch es klappt irgendwie nicht immer.

    Das höre ich zum ersten Mal. Es ist zwar erlaubt, das <BODY>-Tag weg zu lassen, aber es zwei Mal zu verwenden? Das widerspricht dem Grundgedanken. Und ich nehme an, daher kommt Dein Problem - woher soll der Browser wissen, welcher body-Tag jetzt gilt? Er muss raten. Und das ist, was Du beobachtest.
    Mir fällt auch kein Grund ein, warum der zweite Boyd-Tag nötig sein sollte - Du kannst den Event-Handler doch auch in den ersten einbauen.

    Grüße,

    Utz