Luegg: Automatischer reload wenn Benutzer inaktiv

Hallo allerseits,

Ein automatischer reload ist ja keine grosse Sache mit
window.setTimeout('location.reload()',300000);

Nur ist das ganze jetzt natürlich nicht besonders Benutzerfreundlich, wenn der Benutzer gerade am Arbeiten mit der Seite ist und dann plötzlich ein reload aufgezwungen wird. Zumal die Seite auch beinahe eine ganze Sekunde benötigt um zu laden.
Desshalb suche ich jetzt eine Möglichkeit um zu erkennen, ob der Benutzer gerade aktiv ist auf der Seite oder schon seit längerem nicht mehr.
Wie müsste ich da am besten vorgehen?

Viele Grüsse,
Luegg

  1. Hmmm...

    ist nur mal so eine Idee.
    Nach x-Zeit öffnen Sich ein popup, wenn dieser popup nach x-zeit nicht geschlossen wird ==> reload, oder wenn dieser popup nicht "onfucus" ist ==> reload.

    In beiden fällen wäre der User a) tot b) nicht anwesend oder c) es wäre ihm egal

  2. Hello,

    Wie müsste ich da am besten vorgehen?

    du könntest den onmousemove-Event überwachen und deinen Timeout in regelmäßigen Abständen mit clearTimeout() wieder auflösen sofern du Aktivität feststellst.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    I will never understand why Germans feel the need to kill trees  --  Arbeitskollege aus UK zum Thema ob eine Dokumentation elektronisch oder auf Papier ausgeliefert wird
    1. Hallo,

      du könntest den onmousemove-Event überwachen und deinen Timeout in regelmäßigen Abständen mit clearTimeout() wieder auflösen sofern du Aktivität feststellst.

      Interessant wären darüber hinaus click-, keypress- und focusin- bzw. DOMFocusIn-Events.
      Im Firefox gibts letztere nicht, da könnte man focus mit Capturing überwachen (document.addEventListener("focus", handler, true)).

      Mathias

      1. Interessant wären darüber hinaus click-, keypress- und focusin- bzw. DOMFocusIn-Events.
        Im Firefox gibts letztere nicht, da könnte man focus mit Capturing überwachen (document.addEventListener("focus", handler, true)).

        Mathias

        Macht es überhaupt Sinn click und focus zu überwachen? Ohne Mausbewegung ist ja schliesslich auch kein Klicken/Fokusieren möglich.

        1. Hallo,

          Ohne Mausbewegung ist ja schliesslich auch kein Klicken/Fokusieren möglich.

          Sehrwohl können click- und focus-Events ohne Mausbewegung auftreten. click ist faktisch eher eine Art »activate«, das auch z.B. beim Aktivieren eines Links mit der Tastatur gefeuert wird. Und Elemente fokussieren kann man mit der Tastatur ebenfalls.

          Mathias

  3. Hi!

    Du laesst dich ja nicht darueber aus, warum der Reload ueberhaupt stattfinden soll. Deshalb rate ich mal, dass der gar nicht noetig ist und etwas Ajax dein Problem loest. (nicht trinken, sondern schreiben, bitte!)

    --
    Trau Dich!
     
    1. Hi!

      Du laesst dich ja nicht darueber aus, warum der Reload ueberhaupt stattfinden soll. Deshalb rate ich mal, dass der gar nicht noetig ist und etwas Ajax dein Problem loest. (nicht trinken, sondern schreiben, bitte!)

      Erstmal Danke für eure Ideen. Habe es jetzt mit setTimeout und clearTimeout gemacht. Das funktioniert super.

        
      function autoReload(){  
        if(softReload !== undefined){  
          window.clearTimeout(softReload);  
        }  
        softReload = window.setTimeout('location.reload()', 30000);  
      }  
      
      

      Das ganze habe ich per Eventloader in die onload und onmousemove Eventlistener geladen.

      Da das Projekt eine Intranet Anwendung auf Framebasis (eine der wenigen Ausnahmen, wo m.M.n. die Nachteile von Frames nicht zum Zuge kommen) ist, habe ich Ajax aussen vor gelassen, da mit dem Frameinhalt auch nur die Daten neu geladen werden, welche auch nötig sind.