有没有办法在页面不活动时阻止 setTimeout("myfunction()",10000);
计数。例如,
- 用户到达“某个页面”并在那里停留 2000 毫秒
- 用户转到另一个选项卡,将“某个页面”保持打开状态。
myfunction()
直到它们返回另外 8000 毫秒后才会触发。
最佳答案
(function() {
var time = 10000,
delta = 100,
tid;
tid = setInterval(function() {
if ( document.hidden ) { return; }
time -= delta;
if ( time <= 0 ) {
clearInterval(tid);
myFunction(); // time passed - do your work
}
}, delta);
})();
现场演示: https://jsbin.com/xaxodaw/quiet
<小时/>变更日志:
- 2019 年 6 月 9 日:我已改用
document.hidden
来检测页面何时不可见。
关于javascript - 仅当选项卡处于事件状态时才运行 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7124095/