Ich versuche eine Seite zu erstellen, um zur Startseite zu gelangen, nachdem z. 10 Sekunden Inaktivität (Benutzer klickt nirgendwo hin). Ich benutze jQuery für den Rest, aber das Set / Clear in meiner Testfunktion ist reines Javascript.
In meinem Frust hatte ich so etwas wie diese Funktion, von der ich hoffte, dass ich sie bei jedem Klick auf die Seite aufrufen konnte. Der Timer startet einwandfrei, wird jedoch nicht mit einem Klick zurückgesetzt. Wenn die Funktion innerhalb der ersten 10 Sekunden fünfmal aufgerufen wird, werden 5 Warnungen angezeigt ... kein clearTimeout ...
function endAndStartTimer() {
window.clearTimeout(timer);
var timer;
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}
Hat jemand ein paar Codezeilen, die den Trick machen? - Bei jedem Klick stoppen, zurücksetzen und den Timer starten. - Wenn der Timer z. 10sec etwas tun.
quelle
Das Problem ist, dass die
timer
Variable lokal ist und ihr Wert nach jedem Funktionsaufruf verloren geht.Sie müssen es beibehalten, Sie können es außerhalb der Funktion platzieren oder wenn Sie die Variable nicht als global verfügbar machen möchten, können Sie sie in einem Abschluss speichern , z.
quelle
Das liegt daran, dass der Timer eine lokale Variable für Ihre Funktion ist.
Versuchen Sie es außerhalb der Funktion zu erstellen.
quelle
Eine Möglichkeit, dies zu verwenden, um zu reagieren:
Hilfreich, wenn Sie eine API erst aufrufen möchten, nachdem der Benutzer beispielsweise die Eingabe beendet hat. Die userTimeout-Funktion kann über onKeyUp an eine Eingabe gebunden werden.
quelle
Ich bin mir nicht sicher, ob dies gegen eine bewährte Codierungsregel verstößt, aber ich komme normalerweise mit dieser heraus:
Dies verhindert, dass der Timer für die Funktion deklariert werden muss.
BEARBEITEN: Dies deklariert auch nicht bei jedem Aufruf eine neue Variable, sondern recycelt immer dieselbe.
Hoffe das hilft.
quelle
Das funktioniert gut. Es ist ein Manager, den ich für Hold-Events gemacht habe. Hat Ereignisse zum Halten und zum Loslassen.
Der Elementparameter ist derjenige, den Sie halten. Der func-Parameter wird ausgelöst, wenn er einige Millisekunden lang hält, die durch den Parameter hold angegeben werden. Der Parameter clearfunc ist optional. Wenn er angegeben wird, wird er ausgelöst, wenn der Benutzer das Element loslässt oder verlässt. Sie können auch einige Problemumgehungen durchführen, um die gewünschten Funktionen zu erhalten. Genießen! :) :)
quelle
Praktisches Beispiel Verwenden von Jquery für ein Dropdown-Menü! Wenn Sie mit der Maus über #IconLoggedinUxExternal fahren, wird div # ExternalMenuLogin angezeigt, und es wird eine Zeitüberschreitung festgelegt, um div # ExternalMenuLogin auszublenden
Wenn Sie mit der Maus über div # ExternalMenuLogin fahren, wird das Timeout abgebrochen. Wenn Sie mit der Maus auf div # ExternalMenuLogin fahren, wird das Zeitlimit festgelegt.
Hier geht es immer darum, clearTimeout aufzurufen, bevor das Timeout festgelegt wird, um doppelte Anrufe zu vermeiden
quelle