【发布时间】:2021-11-08 06:50:09
【问题描述】:
我有一些代码在setTimeout 函数中指定了几秒钟的循环和中断,然后在延迟结束后再次循环代码。我面临的问题是,当页面失去焦点一段时间后,超时会不同步,并且代码会以“随机”间隔循环,而不是setTimeout 延迟中指定的间隔。
这是当前代码供参考:
$(document).ready(function () {
for (var key in keys) {
element = key;
val = keys[key];
test(element, val);
(function loop(element, val) {
setTimeout(function () {
test(element, val);
loop(element, val);
}, 5000);
})(element, val);
}
});
我已经搜索了一下,问题似乎是意料之中的,我正在尝试找到理想的解决方法,到目前为止,我采用了更简单的方法,即在页面丢失时重新加载整个页面,然后重新集中注意力。它有效,但我对此并不满意。
这是当前的解决方法:
$(window).blur(function(){
$(window).focus(function(){
location.reload();
});
});
我还阅读了有关将clearTimeout 与focus 一起使用以尝试重新启动或同步超时但在多次尝试中我无法使某些东西正常工作的信息。充其量它仍然会以某种形式使超时失控。
我不知道该采取哪个方向才能获得比刷新网页更合适的方法。
提前感谢您的任何建议。
【问题讨论】:
标签: javascript jquery settimeout