Javascript-timeout, wenn keine Aktionen, die vom Benutzer für die angegebene Zeit
Möchte ich nennen, eine js-Funktion, wenn keine Aktivität vom Benutzer auf die web-Seite für die angegebene Zeit. Wenn eine Aktivität vom Benutzer dann wieder timeout. Ich habe versucht zu suchen aber konnte nichts finden insbesondere. Ich bin vertraut mit setTimeout() und clearTimeout() und wie Sie funktionieren. Was ich Suche ist wo/wie zur überwachung der Benutzeraktivität. Gibt es eine Veranstaltung, in der ich das einstellen kann und timer löschen?
Danke.
Edit #1:
Diese Webseite hat ein input-text-Feld & ein Knopf. Es ist eine Art chat-Seite. Wenn ich sage, kein Benutzer-Aktivität, ich meine, dass der Benutzer nicht eingegeben, etwas im Textfeld oder nicht gedrückt beliebige Taste für eine festgelegte Zeit. Und noch eins, es ist speziell für touch-basierte Smartphones.
Edit #2:
Danke an alle für die Anregungen. Ich habe implementierte Lösung basiert auf mehr als einer Antworten. Also ich gebe upvote für alle Antworten, die ich gefunden habe, hilfreich, anstatt zu akzeptieren als Antwort.
InformationsquelleAutor der Frage indusBull | 2011-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten: Nicht mit jQuery aus welchem Grund auch immer? Hier sind einige (noch ungetestete) code, der sollte cross-browser-sauber (bis zu einem Punkt; funktioniert nicht mit IE5 Mac, zum Beispiel ;):
InformationsquelleAutor der Antwort Phrogz
Diese Anrufe für einen debouncer:
Wie folgt verwendet:
Die erste Aktion des Benutzers (mousemove-Ereignis, klicken Sie auf oder scrollen) startet eine Funktion (an einer Zeitschaltuhr) , zurück, jedes mal wenn ein anderer Benutzer-Aktion Auftritt. Die primäre callback nicht ausgelöst, bis die angegebene Zeitspanne verstrichen ist, ohne dass Aktionen.
Beachten Sie, dass keine Globale flags oder timeout-Variablen benötigt. Der Globale Bereich erhält nur Ihre entprellten Rückruf. Hüten Sie sich vor Lösungen, die erfordern, dass die Wartung des globalen Zustands; Sie sind schwierig zu Grunde geht, in den Kontext einer größeren Anwendung.
Beachten Sie auch, dass diese Lösung ist ganz allgemein. Hüten Sie sich vor Lösungen, die gelten nur für Ihre extrem engen Anwendungsfall.
InformationsquelleAutor der Antwort Wayne Burkett
Meisten JavaScript-Ereignisse Blaseso dass Sie könnte so etwas wie die folgenden:
click
mousemove
keydown
usw.)document
(oder vielleichtdocument.body
für einige von Ihnen; ich kann mich nicht erinnern, ob das ein Problem ist oder nicht).clearTimeout
/setTimeout
So dass Sie würde am Ende mit etwas wie dieses:
Beachten Sie, dass es gibt einige Probleme, die Sie haben würden, zu arbeiten, mit dem obigen code:
addEventListener
also es funktioniert nicht in IE6-8Es ist mehr, um Ihnen eine Vorstellung von dem, was Sie tun konnte.
Und jetzt sind es vier andere Antworten, aber ich habe bereits geschrieben, bis Sie alle, so ist es 😛
InformationsquelleAutor der Antwort sdleihssirhc
Den Sie überwachen möchten Veranstaltungen wie
mousemove
keypress
keydown
und/oderclick
auf der Dokument-Ebene.Edit: Dies eine smartphone-app verpasst, was Ereignisse, die Sie hören wollen. Angesichts Ihrer textbox und button-Anforderungen, ich würde hören
oninput
und fügen Sie dann dieresetTimeout()
Aufruf der click-Ereignishandler für die Schaltfläche.InformationsquelleAutor der Antwort gilly3
Etwas wie dieses:
IE: http://jsfiddle.net/acNfy/
Aktivität in der rechten unteren frame Verzögerung der Rückruf.
InformationsquelleAutor der Antwort Paulpro
Ich bin mit einem kleinen "delay" - Methode, die ich gefunden habe dieser thread
verwenden, wie
InformationsquelleAutor der Antwort Flion
Werfen Sie auch einen Blick auf jQuery-plugin idleTimer von Paul Irish (jquery.idle-timer.js). Es basiert auf Nicholas C. Zakas' Erkennen, wenn der Benutzer inaktiv ist mit JavaScript und YUI 3 Artikel (idle-timer.js).
Sieht es bei ähnlichen Veranstaltungen an den anderen Antworten, plus ein paar mehr.
InformationsquelleAutor der Antwort Kevin Hakanson