Beachking: Browser-Abarbeitungsreihenfolge von "onunload"

Hallo Zusammen,

ich habe ein Problem mit dem JS-Befehl "unonload".
Ich habe eine html-Datei, in der ich mit onunload  ein Function ausführen lasse. Diese Function öffnet u.a. über "location.href" eine URL zu einem externen PHP in der Daten aus der URL (welche über location.href aufgerufen wurde) in eine MYSQL DB geschrieben werden.

Dies funktioniert auch alles super, wenn der Browser geschlossen wird.

Wenn ich jetzt jedoch den Browser nicht schließe, sondern nur einen Link (zB Unterkategorie) öffne, wird auch "onunload" asugeführt. Das ist auch korrekt und soll so sein. Nur leider wird die URL der Unterkategorie von dem location.href aus der "onunload" Function überschrieben und ich werde als User nicht in die Untrerkategorie verlinkt sondern bleibe auf dem PHP script stehen.

Gibt es eine Möglichkeit, dies zu verhindern? Oder eine Function mit der ich die geklickte URL herausfinden kann, in eine Variable speicher und nach dem location.href wieder aufrufen lasse?

Ich bin für alle Ideen offen...

Vielen Dank für Eure Hilfe vorab!
Beachking

  1. Yerf!

    Wenn ich jetzt jedoch den Browser nicht schließe, sondern nur einen Link (zB Unterkategorie) öffne, wird auch "onunload" asugeführt. Das ist auch korrekt und soll so sein. Nur leider wird die URL der Unterkategorie von dem location.href aus der "onunload" Function überschrieben und ich werde als User nicht in die Untrerkategorie verlinkt sondern bleibe auf dem PHP script stehen.

    Gibt es eine Möglichkeit, dies zu verhindern?

    Ja, mach den Request nicht per location.href sondern als XMLHttpRequest (also über Ajax). Ich hab das mit einem automatischen Logout beim Verlassen der Seite bereits erfolgreich getestet (ich hab den Code blos grad nicht da, aber da steckt auch nicht viel mehr dahinter als bei einem 0-8/15 Beispiel für Ajax).

    Gruß,

    Harlequin

    1. Hi Harlequin,

      ich habe mich auch gerade mal in das Thema eingelesen. Leider kann ich jedoch mit dem XMLHttpRequest nicht Domainübergreifend arbeiten und kann ihn somit nicht verwenden. Gibt es die Möglichkeit bestimmte Domains zu definieren, auf welche dann zugegriffen werden darf?

      Danke für Deine Hilfe vorab.
      Beachking

      Yerf!

      Wenn ich jetzt jedoch den Browser nicht schließe, sondern nur einen Link (zB Unterkategorie) öffne, wird auch "onunload" asugeführt. Das ist auch korrekt und soll so sein. Nur leider wird die URL der Unterkategorie von dem location.href aus der "onunload" Function überschrieben und ich werde als User nicht in die Untrerkategorie verlinkt sondern bleibe auf dem PHP script stehen.

      Gibt es eine Möglichkeit, dies zu verhindern?

      Ja, mach den Request nicht per location.href sondern als XMLHttpRequest (also über Ajax). Ich hab das mit einem automatischen Logout beim Verlassen der Seite bereits erfolgreich getestet (ich hab den Code blos grad nicht da, aber da steckt auch nicht viel mehr dahinter als bei einem 0-8/15 Beispiel für Ajax).

      Gruß,

      Harlequin

      1. Yerf!

        ich habe mich auch gerade mal in das Thema eingelesen. Leider kann ich jedoch mit dem XMLHttpRequest nicht Domainübergreifend arbeiten und kann ihn somit nicht verwenden. Gibt es die Möglichkeit bestimmte Domains zu definieren, auf welche dann zugegriffen werden darf?

        Hm, da ist mir leider nichts bekannt.

        Gruß,

        Harlequin

  2. Hallo,

    Nur leider wird die URL der Unterkategorie von dem location.href aus der "onunload" Function überschrieben und ich werde als User nicht in die Untrerkategorie verlinkt sondern bleibe auf dem PHP script stehen.

    Verstehe ich das richtig: Deine onunload-Funktion setzt erst location.href der aktuellen Seite auf ein PHP-Script, und dann soll es normal weiter gehen?

    Meines Wissens ist dar ganze body-Inhalt zum Zeitpunkt von onunload noch vorhanden. Wenn du also nicht die location.href der zu verlassenden Seite, sondern die eines iFrames auf dein PHP-Script setzt, müsste es klappen. Dazu muss deine onunload-Funktion ggf. erst ein iframe im body erstellen.

    Gruß, Don P