Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用户离开选项卡时暂停的setInterval()?_Javascript - Fatal编程技术网

Javascript 用户离开选项卡时暂停的setInterval()?

Javascript 用户离开选项卡时暂停的setInterval()?,javascript,Javascript,javascript中是否有类似setInterval()的方法,在用户离开选项卡时停止,在用户再次进入选项卡时恢复?您可以创建自己的API,使用来检测选项卡何时可见或隐藏,并在引擎盖下调用本机setInterval和clearInterval var mySetInterval, myClearInterval; (function() { var data = Object.create(null), id = 0; mySetInterval = function my

javascript中是否有类似setInterval()的方法,在用户离开选项卡时停止,在用户再次进入选项卡时恢复?

您可以创建自己的API,使用来检测选项卡何时可见或隐藏,并在引擎盖下调用本机
setInterval
clearInterval

var mySetInterval, myClearInterval;
(function() {
  var data = Object.create(null),
      id = 0;
  mySetInterval = function mySetInterval(func, time) {
    data[id] = {
      nativeID: setInterval(func, time),
      func: func,
      time: time
    };
    return id++;
  };
  myClearInterval = function myClearInterval(id) {
    if(data[id]) {
      clearInterval(data[id].nativeID);
      delete data[id];
    }
  };
  document.addEventListener('visibilitychange', function() {
    if(document.visibilityState == 'visible')
      for(var id in data)
        data[id].nativeID = setInterval(data[id].func, data[id].time);
    else
      for(var id in data)
        clearInterval(data[id].nativeID);
  });
})();
var mySetInterval,myClearInterval;
(功能(){
var data=Object.create(null),
id=0;
mySetInterval=函数mySetInterval(func,time){
数据[id]={
nativeID:setInterval(函数,时间),
func:func,
时间:时间
};
返回id++;
};
myClearInterval=函数myClearInterval(id){
if(数据[id]){
clearInterval(数据[id].nativeID);
删除数据[id];
}
};
document.addEventListener('visibilitychange',function(){
如果(document.visibilityState==“可见”)
for(数据中的变量id)
数据[id]。nativeID=setInterval(数据[id]。func,数据[id]。时间);
其他的
for(数据中的变量id)
clearInterval(数据[id].nativeID);
});
})();
var log=document.getElementById('log'),
定时器;
document.getElementById('start')。onclick=function(){
var num=0;
myClearInterval(计时器);
计时器=mySetInterval(函数(){
log.innerHTML=num++;
},1e3);
};


谢谢你的提问,大卫,但我认为重复的问题会很好地满足你的需要@Bergi另一个问题是,当选项卡未激活时,浏览器如何处理本机
setInterval
。这个问题是关于模拟
setInterval
,当选项卡变为非活动状态时强制暂停。它们不是重复的。