Automatischer reload wenn Benutzer inaktiv
Luegg
- javascript
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
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
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
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
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.
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
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!)
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.