eindeutiger Unterschied unload und refresh

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • eindeutiger Unterschied unload und refresh

    Hi,

    Wenn ich im body-tag das Ereignis unload überwache geschieht dies auch, beim Aktualiaieren der Seite. Gibt es eine Möglichkeit herauszufinden, ob der User meine Seite verlässt, oder nur ein refresh macht?

    Danke

  • #2
    Nicht sofort. Du kannst PHP-Seitig rausfinden, ob ein Refresh gemacht wurde, nachdem er passiert ist. Davor nicht.

    Kommentar


    • #3
      Da fehlt ja was elementares. Wundert mich, wenn das nicht bedacht wurde

      Kommentar


      • #4
        Oooch, also ich habs noch nie vermißt.
        Beschreib doch mal dein konkretes Anliegen, für das Du das brauchst. Ich bin sicher, es findet sich ein brauchbares Workaround.

        Kommentar


        • #5
          Ich bastel eine Art Minichat in einem Online-Multigame(Javascript(PHP).

          Wenn ein chatter den Browser schließt, oder eine andere URL besuchen will, öffnet sich ein neues kleines Fenster und räumt auf.
          Das heißt es gibt eine Liste (.txt) in der alle Chatter samt deren Status, also
          deren Id(session_ip), die Eintrittszeit, Name und Status gelistet sind.
          Verlässt einer den Raum wird in deren Status eingetragen(hat den Raum verlassen).

          Das blöde ist nun, wenn einer aktualisiert wird eben dieser Status auch eingetragen.

          Kommentar


          • #6
            Mmh... Ich weiß gerade nicht, ob window.opener auf die öffnende Seite bezogen ist oder aufs öffnende Browserfenster. Falls letzteres, könntest Du in das Aufräum-Popup eine drei-Sekunden-Pause einbauen. Nach dieser Pause wird geprüft, ob window.opener.location.href die alte Seite ist oder eine neue, fremde. Nur in letzterem Fall würde dann der Status eingetragen. Aber Achtung! Es ist Samstagmorgen, und ich weiß das mit window.opener grad nicht

            Ist natürlich in jedem Fall nicht 100%ig zuverlässig, aber das ist das Aufräum-Popup an sich schon nicht, falls das die einzige eingebaute Logout-Kontrolle ist! Benutzer ohne JS oder mit Popupblocker werden so eh nicht abgemeldet.

            Kommentar


            • #7
              Original geschrieben von pekka
              Benutzer ohne JS oder mit Popupblocker werden so eh nicht abgemeldet.
              Das ist schon klar. Kommt als Art Systemvorraussetzung vors Spiel.
              Mit opener (nicht window.opener), "so funktionierts bei mir jedenfalls" und Pause könnte ich mal probieren.

              Wenn also die URL die selbe ist, wird nicht aufgeräumt.

              Ich melde mich wieder

              Danke

              Kommentar


              • #8
                Also,

                opener.parent (so muss es bei mir heißen) darf nur abgefragt werden, Wenn die URL die aufzurufende URL war.

                Das opener.parent bezieht sich nicht auf das öffnende Fenster, sondern um die öffnende URL bzw. den Namen des Frames.

                Wechselt das parent Fenster also die URL, oder wird das Fenster geschlossen bekomme ich ich eine Java-Script-Fehlermeldung Erlaubnis verweigert.

                Ich werde mich also weiter um ein Workaround bemühen

                Kommentar


                • #9
                  Habs jetzt wild zurechtgemurkst


                  //Diese Funktion räumt schließlich auf wenn...
                  function checkLok()
                  {
                  window.open("smallUnloader.php4?locChech=OK","smUnloader");
                  }

                  //... mehr als eine Sekunde Zeit vergeht
                  window.setTimeout("checkLok()",1000);

                  //...Und hier ein Fehler entdeckt wird, weil es opener nicht mehr gibt
                  //...Und hier das Script stehen bleibt.
                  var url = opener.parent.location.href;

                  //Wenn es den opener doch noch gibt und das Script bis hierher kommt
                  //Schnell das Fenster schließen. Ansonsten gibt es immer noch
                  //das timeout das dann ausgeführt wird.
                  self.close();
                  Zuletzt geändert von callt; 12.03.2005, 17:00.

                  Kommentar

                  Lädt...
                  X