video.onloadedmetadata = function start(){ //invoke
var thethis = this;
var event;
var timeout;
function func(){
mainFunction(event); //this is supposed to fire only once, instead it fires constantly.
console.log("sending!!!"); //This won't stop show up in the console
clearTimeout(timeout);
console.log(event);
}
video.addEventListener("mousemove", function(e){
event = e;
outsideElement = false;
clearTimeout(timeout);
timeout = setTimeout(func, 600);
});
video.addEventListener("mouseout", function(){ //mouse is out of elem
outsideElement = true; //extra security, really make sure not to fire Mainfunction will check - if it's indeed outsideElement then it won't work properly.
clearTimeout(timeout);
}); //don't fire mainFunction in this case
}
Yapmaya çalıştığım şey gerçekte işe yaramıyor olsa da oldukça basit. Bir kullanıcı faresini videom üzerine taşıdığında ve yarım saniye boyunca belirli bir noktada durduğunda, mainFunction olarak adlandırılan bir fonksiyonun bir kez ateş etmesi beklenir. Bir dahaki sefere faresini hareket ettirir ve bir noktada durur, tekrar gerçekleşmesi gerekiyordu - ama bunun yerine mainFunction'u durdurmayacak. JQuery'yi birkaç nedenden dolayı kullanamıyorum, yani lütfen - eğer herhangi bir kütüphane olmadan, yardım ederseniz.Zamanlayıcı bir işlevi tetiklemeyi durduramıyor
JS FIDDLE: İşte https://jsfiddle.net/7con1p04/1/
Kodunuzu sınayacak bir JSFiddle veya bir şey sağlayabilir misiniz? – FredMaggiowski
bir göz at, sadece – user1938653
yaptı Konsolu kontrol ederek sadece bir kez ve sadece durduğumda tetikler. Videoyu farenin içinde hareket ettirdiğimde, tekrar durmadığım sürece (ve sadece bir kez ateş edildi), sorunuzu anladığım kadarıyla, işte aradığınız davranış bu değil, değil mi? – FredMaggiowski