计时器不会停止触发函数
Timer won't stop firing a function
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
}
我想做的很简单,尽管实际上不起作用。一旦用户在我的视频上移动鼠标,并且他在某个位置停止半秒钟,一个名为mainFunction的函数应该触发一次。下次他移动鼠标并停在某个地方时,它应该会再次发生 - 但它不会停止触发mainFunction。由于多种原因,我无法使用jQuery,所以请 - 如果你能帮忙,只是没有任何库。
JS小提琴:(也检查控制台(https://jsfiddle.net/7con1p04/1/
这是一个 jsFiddle,它将您的功能归结为计时器/鼠标移动延迟(相同的代码,只是删除了其他所有内容(:
var timeout;
function func(){
console.log('fire');
clearTimeout(timeout);
}
document.addEventListener("mousemove", function(e){
clearTimeout(timeout);
timeout = setTimeout(func, 600);
});
它完美无缺。
我会寻找计时器/延迟逻辑本身以外的其他地方。此时,如果我是你,我会开始在所有这些函数中放置单独的控制台.log调用,并确保它们仅在您期望时才被调用。
相关文章:
- 计时器不会停止触发函数
- 如何编写一个函数的脚本,为HTML中显示的JavaScript计数计时器添加秒数
- Javascript setTimeOut 函数与 .net 中 Windows 应用程序的计时器不匹配
- 如何停止计时器函数运行
- 画布计时器的设置超时调用函数
- JavaScript时钟运行计时器函数时出现问题
- 无法停止/删除/销毁日期计时器选择器函数 (jQuery)
- 调用函数时Jquery倒计时重置计时器
- 在调用函数时用javascript设置计时器
- 使用计时器触发一个jquery函数
- Javascript计时器与ASP. NET AJAX pagload()函数
- 如何停止Javascript的执行?还有所有的计时器?(如何停止一个函数轮询-或monkeypatching它)
- setInterval函数即使使用clearInterval(计时器)也不会停止
- 如何将JavaScript函数转换为jQuery,以便在加载页面时使用倒计时计时器
- 当ajax计时器(倒计时)显示0时,调用c#函数
- 如何在飞行中创建多个计时器函数并使用setInterval
- 有没有办法运行一个javascript函数的计时器
- 如何为基于公式定位元素的函数正确设置计时器
- 这个jquery函数可以添加一个计时器吗
- JavaScript -不能让计时器函数在页面加载时被调用