使用getTime的停止/中断函数执行
Stop/interrupt function execution which works with getTime
当我按下鼠标中键时,它会在控制台中显示"1秒后"。没关系,这正是我需要的。但如果我释放鼠标中键(mouseup监听器),我也想停止1秒的延迟。但现在,当"wait"函数执行"mouseup"时,侦听器当然不会将"delay"变量更改为false(仅在经过1秒之后)。但是mb有什么办法我能做到吗?(停止"等待"功能,例如当鼠标中键延迟0.5秒,而不是1秒时)
function wait(ms){
var start = new Date().getTime();
var end = start;
while((end < start + ms) && delay == true) {
end = new Date().getTime();
}
}
var delay = false;
document.addEventListener("mousedown", function(e) {
if (e.button == 1) { // 1 - middle mouse button
delay = true;
wait(1000); // delay 1 sec
console.log("after 1 sec");
}
});
document.addEventListener("mouseup", function(e) {
if (e.button == 1) {
delay = false;
}
});
更新:我将用document.execCommand("copy");
替换console.log("after 1 sec");
,我们可以使用setTimeout()
函数在Chrome浏览器中延迟复制到剪贴板最多1秒,但它在带有setTimeout()
的Firefox中不起作用,但wait(999); document.execCommand('copy');
适用于Firefox(最多允许999毫秒)
您的问题是mousedown监听器函数将阻止进一步执行,直到它完成。您的等待函数实现了所谓的"繁忙等待"。您应该使用setTimeout()
,它允许您在特定时间后异步执行函数。您可以从setTimeout()
获得一个句柄,如果释放鼠标按钮,可以使用该句柄中止超时。看见https://developer.mozilla.org/en/docs/Web/API/WindowTimers/setTimeout了解更多信息。
相关文章:
- 递归函数中断
- 从jquery foreach内部中断函数
- JavaScript 函数在 IE9 中随机中断
- Angularjs 与 coffeescript 函数表达式中断
- Javascript:变量中断函数
- return语句在JavaScript中使用而不中断函数
- 调用加载的顺序函数会意外中断代码
- 从匿名函数中中断for循环
- 清除文本区域会中断其他JS函数
- 如何在返回值(Js)时不中断函数/循环
- 进度条函数在一次调用后中断
- 一个函数在另一个函数上中断.可能吗
- 中断 JQuery 设置超时函数
- 在 ASP.NET 页面中内联编码 SVG 会导致 SVG JavaScript 创建 SVGPoint();函数中断
- 从调用/子函数退出/中断主函数
- 在事件上中断函数
- 如果条件不通过,则中断函数
- Javascript:将变量传递给函数会中断函数
- atom美化插件中断函数参数
- 使用getTime的停止/中断函数执行