Loilo: Feststellen ob Besucher die Seite zwischenzeitlich verlassen hat

Hallo Leute,
folgendes Problem:
Kann man mit Javascript feststellen, ob ein Besucher zwischenzeitlich mal auf einer anderen Seite war bzw. seine Rückkehr bemerken.
Mit "onunload" sollte es nicht funktionieren - oder?

Klingt sicher nicht gerade praxisnah, von daher mal kurz, was ich vorhabe:
Ich arbeite an einem CMS. Angenommen, es wird gerade eine Seite bearbeitet. Es kann nun aber sein (auch wenn es unwahrscheinlich ist), dass der Benutzer ein zweites Fenster / Tab mit diesem CMS öffnet und die selbe Seite bearbeitet und speichert.
Wenn er nun zum alten Fenster zurückkommt, und speichert, überschreibt er die gemachten Änderungen. Davor soll gewarnt werden.
Mir ist klar, dass das sehr gut mit PHP erledigt werden kann, aber ich würde die Überprüfung am liebsten vornehmen (und ggf. die Warnung ausgeben), wenn der Nutzer auf die Seite zurückkehrt.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt...

Danke für jede Hilfe,
Flo

  1. Wenn er nun zum alten Fenster zurückkommt, und speichert, überschreibt er die gemachten Änderungen. Davor soll gewarnt werden.
    Mir ist klar, dass das sehr gut mit PHP erledigt werden kann, aber ich würde die Überprüfung am liebsten vornehmen (und ggf. die Warnung ausgeben), wenn der Nutzer auf die Seite zurückkehrt.

    Verallgemeinere dein Problem.
    Du hast meherer Admins/Editoren, die das Recht haben, ein File zu bearbeiten.
    Unglückklicherweise sind beide zur Gleichenzeit online, und bearbeiten das gleiche File.
    Dein Problem hat wenig mit dem User-Agent zu tun.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Verallgemeinere dein Problem.
      Du hast meherer Admins/Editoren, die das Recht haben, ein File zu bearbeiten.
      Unglückklicherweise sind beide zur Gleichenzeit online, und bearbeiten das gleiche File.

      Gut, aber da kann man denke ich, nicht viel mit Javascript machen (bzw. frühestens beim absenden des Formulars...). Es ginge natürlich per onkeyup, aber nach jedem neuen Buchstaben eine AJAX-Request zu senden, wäre denke ich nicht die beste Idee ;)

      Dein Problem hat wenig mit dem User-Agent zu tun.

      Mich hätte die Lösung auch allgemein interessiert - wenn es eine gibt ;)

      1. Dein Problem hat wenig mit dem User-Agent zu tun.

        Mich hätte die Lösung auch allgemein interessiert - wenn es eine gibt ;)

        Du musst die art, wie beschreibbare Files geöffnet werden, unterscheiden in "zum lesen öffnen", "zum schreiben öffnen"
        Im letzteren Fall genügt ein speichern nicht. Es braucht einen Timeout (zum beispiel logout) oder explizite Freigabe seitens des Editors.
        Du musst also mit dem schreibenden öffnen die Userid und Timestamp in die offene Fileliste eintragen.
        Sollte der User nun sein File zum zweiten mal öffnen, kannst du ihn warnen.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Du musst also mit dem schreibenden öffnen die Userid und Timestamp in die offene Fileliste eintragen.
          Sollte der User nun sein File zum zweiten mal öffnen, kannst du ihn warnen.

          Hmm ich glaube das ist nicht das, was ich wissen wollte... ich wollte eigentlich wissen, ob es eine Art "Event-Handler" für das Zurückkehren auf eine Seite gibt, vllt. in Verbindung mit onload oder onunload...

          1. ob es eine Art "Event-Handler" für das Zurückkehren auf eine Seite gibt

            Es gibt das focus-Ereignis beim window-Objekt. Das hat aber zunächst einmal wenig mit »Zurückkehren auf eine Seite« zu tun. Es wird gefeuert, wenn das Fenster fokussiert wird - das kann viele Gründe haben.

            Mathias

          2. ich wollte eigentlich wissen, ob es eine Art "Event-Handler" für das Zurückkehren auf eine Seite gibt, vllt. in Verbindung mit onload oder onunload...

            load passiert einmal, wenn das Dokument geladen wird, unload passiert, wenn die Seite verlassen wird. - Du sagst doch selbst, dass es dir um den Fall geht, dass jemand in einem zweiten Tab dieselbe Seite aufruft, während die Seite im ersten Tab unangetastet bestehen bleibt. Also kannst du da mit onload bzw. onunload überhaupt nichts anfangen.

            Mathias

          3. Hi,

            Du musst also mit dem schreibenden öffnen die Userid und Timestamp in die offene Fileliste eintragen.
            Sollte der User nun sein File zum zweiten mal öffnen, kannst du ihn warnen.

            Hmm ich glaube das ist nicht das, was ich wissen wollte...

            Das kann u.a. daran liegen, dass du noch nicht hinreichend analysiert hast, wo eigentlich das *Problem* liegt.

            ich wollte eigentlich wissen, ob es eine Art "Event-Handler" für das Zurückkehren auf eine Seite gibt, vllt. in Verbindung mit onload oder onunload...

            Was sollte dir ein solcher nützen?
            Wenn der Nutzer zwischendurch ein bisschen Nachrichten liest, twittert, sich bei Youtube ein Video anschaut - ja, dann könntest du ihn danach immer mit deinem "Hinweis", den du einblenden willst, nerven - und ihn damit richtig schön abstumpfen, so dass es ihn gar nicht mehr interessiert, wenn dann irgendwann mal die Situation eintritt, in der dieser Hinweis vielleicht sogar berechtigt wäre.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
        2. ja, dann könntest du ihn danach immer mit deinem "Hinweis", den du einblenden willst, nerven

          Ich nerve niemanden, es wird ja kein "Welcome back"-Alert ;)
          Ich habe ja gesagt, ich würde in diesem Fall nur automatisch die Prüfungsfunktion durchlaufen lassen, der "Hinweis" würde nur im Falle einer zwischenzeitlichen Veränderung kommen.

          Es gibt das focus-Ereignis beim window-Objekt.

          Hm ja das klingt an sich gut, aber da hast du Recht, es wird in endlos vielen Fällen fokussiert, macht von daher also auch keinen Sinn...

          Nun gut ich würde das ganze jetzt als erledigt betrachten und mich auf die Überprüfung vorm Speichern beschränken.

          Danke an alle für die Hilfe!

  2. Hi,

    Ich arbeite an einem CMS. Angenommen, es wird gerade eine Seite bearbeitet. Es kann nun aber sein (auch wenn es unwahrscheinlich ist), dass der Benutzer ein zweites Fenster / Tab mit diesem CMS öffnet und die selbe Seite bearbeitet und speichert.

    aus Client-Sicht ist das exakt das selbe, als wenn kurz eine Systemmeldung kommt (sagen wir, seine Firewall gibt eine Warnung aus). Dein Vorhaben ist Unfug.

    Mir ist klar, dass das sehr gut mit PHP erledigt werden kann, aber ich würde die Überprüfung am liebsten vornehmen (und ggf. die Warnung ausgeben), wenn der Nutzer auf die Seite zurückkehrt.

    Du kannst keine Daten überprüfen, die nicht zur Verfügung stehen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. hi,

    Ich arbeite an einem CMS. Angenommen, es wird gerade eine Seite bearbeitet. Es kann nun aber sein (auch wenn es unwahrscheinlich ist), dass der Benutzer ein zweites Fenster / Tab mit diesem CMS öffnet und die selbe Seite bearbeitet und speichert.
    Wenn er nun zum alten Fenster zurückkommt, und speichert, überschreibt er die gemachten Änderungen. Davor soll gewarnt werden.

    Hab ich mit Zeitstempeln gelöst: Jeder Datensatz (DS), der den Content einer Seite beinhaltet, bekommt einen Zeitstempel des letzten Update aufgedrückt. Wird ein DS zum Bearbeiten in den Browser geladen, wird der Zeitstempel mitgegeben, ganz einfach in ein hidden-Field.

    Bei einem Update/Speichern wird der clientseitige Zeitstempel aus dem Bearbeitungsformular mit dem serverseitigen Zeitstempel aus der DB verglichen und bei Ungleichheit eine entsprechende Meldung ausgegeben, idealerweise mit der Darstellung der mittlerweile geänderten Inhalte, so dass der Bearbeiter selbst entscheiden kann, was der damit macht.

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.