javascript - 仅当选项卡处于事件状态时才运行 setTimeout

标签 javascript jquery

有没有办法在页面不活动时阻止 setTimeout("myfunction()",10000); 计数。例如,

  1. 用户到达“某个页面”并在那里停留 2000 毫秒
  2. 用户转到另一个选项卡,将“某个页面”保持打开状态。
  3. 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/

相关文章:

javascript - 一旦我们使用 css 单击单个按钮,如何更改其他两个按钮的不透明背景颜色

javascript - 将嵌套的 PHP 循环传递给 javascript

javascript - 如何从多阵列中删除文件详细信息

javascript - 从数据编号更改 css

javascript - 调用变量中命名的 jQuery 函数

javascript - 图片随机放置在页面上

javascript - 如何将 jQuery 事件处理程序附加到 YouTube 电影?

javascript - 如何将 &lt;script&gt; 加载到 iframe 中?

jquery - Basic Jquery Slider(bjqs) 不适用于一张幻灯片

jquery - Ajax 内容没有得到样式表?