2016-03-26 7 views
0

Was ich versuche zu tun ist ziemlich einfach, obwohl in Wirklichkeit nicht funktioniert. Sobald ein Benutzer seine Maus über mein Video bewegt und an einer bestimmten Stelle für eine halbe Sekunde anhält, soll eine Funktion namens mainFunction einmal ausgelöst werden. Das nächste Mal, wenn er seine Maus bewegt und an einer Stelle anhält, soll es wieder passieren - aber stattdessen hört es nicht auf, mainFunction zu feuern. Ich kann jQuery aus verschiedenen Gründen nicht verwenden, also bitte - wenn Sie helfen können, ohne irgendwelche Bibliotheken.Timer wird nicht aufhören, eine Funktion zu feuern

JS FIDDLE: (überprüfen Sie die Konsole auch) https://jsfiddle.net/7con1p04/1/

+0

Können Sie ein JSFiddle oder etwas zum Testen Ihres Codes bereitstellen? – FredMaggiowski

+0

check it out, habe gerade – user1938653

+0

Überprüfung der Konsole löst es nur einmal und nur wenn ich stoppe. Wenn ich die Maus innerhalb des Videos bewege, wird es nicht ausgelöst, es sei denn, ich stoppe es erneut (und es wird nur einmal ausgelöst), soweit ich Ihre Frage verstanden habe, ist dies das Verhalten, nach dem Sie suchen, nicht wahr? – FredMaggiowski

Antwort

-1

Hier ein jsFiddle ist, die auf nur den Timer/mousemove- Verzögerung Ihre Funktionalität läuft darauf hinaus (gleichen Code, nur alles andere gezupft):

var timeout; 

function func(){ 
    console.log('fire'); 
    clearTimeout(timeout); 
} 

document.addEventListener("mousemove", function(e){ 
    clearTimeout(timeout); 
    timeout = setTimeout(func, 600); 
}); 

Es funktioniert einwandfrei.

Ich würde anderswo als die Timer/Delay-Logik selbst suchen. An diesem Punkt, wenn ich Sie wäre, würde ich beginnen, separate console.log-Aufrufe in all diesen Funktionen zu setzen und sicherzustellen, dass sie nur dann aufgerufen werden, wenn Sie es erwarten.

+0

Überprüfen Sie die Konsole in dem, was Sie gerade gesendet haben. es wird nicht aufhören, "Feuer" zu schießen, obwohl ich sagte, ich brauche die "Feuer" -Konsole, um nur einmal zu schießen - wenn der Benutzer an einer bestimmten Stelle für eine halbe Sekunde angehalten hat. Während er IDLE ist, sollte nichts passieren. – user1938653

+0

@ user1938653 - In Anbetracht meiner einzigen Ausgabe war die Konsole, es ist eine ziemlich gute Wette, dass ich die Konsole überprüfte, bevor ich sagte, dass es funktioniert :) Und für mich bewege ich die Maus auf Doc und nichts passiert, bis ich aufhöre ... dann eine halbe Sekunde später es feuert. Dann verlasse ich es und nichts passiert ... es sei denn, ich bewege es erneut und höre es dann wieder auf ... in diesem Fall feuert eine halbe Sekunde nach dem Ende noch einmal. Wenn Sie das nicht sehen, müssen Sie angeben, auf welchem ​​Browser/System Sie sich befinden, da dies offensichtlich etwas Spezifisches ist. –

+0

@ user1938653 - FYI, gleich für die jsfiddle, die Sie posten. Das Ereignis wird nur einmal ausgelöst, nachdem ich die Maus bewegt habe und dann für eine halbe Sekunde angehalten habe. Dann unternimmt es nichts, bis ich mich bewege und stoppe und noch einmal eine halbe Sekunde warte. Fred meldet die gleichen Ergebnisse. Du bist der einzige, der ein Problem sieht, Knospe. Ich habe beide Tests auf Chrome wie Sie gemacht. Es ist etwas mit Ihrem System, nicht mit Ihrem Code. –

Verwandte Themen