您当前的位置:首页 > 计算机 > 软件应用 > 浏览器应用

完美解决 setInterval 在浏览器切换时加速的问题

时间:12-14来源:作者:点击数:

JavaScript 中当我们切换浏览器的时候,setInterval 会加快速度

导致这个原因是:发现这是因为浏览器本着节省内存的性质,当切换到其他页面时,采油系统页面的定时器不运动,但是动画依然排列,当切换回来的时候,动画加速运动,出现错误,在轮播图之类的页面经常会发生这样的情况。

在这里我们需要用到以下三个知识点

  • document.onvisibilitychange :只要页面发生变化,不管是切换到其他的页面还是把浏览器缩小,都会触发这个事件。
  • document.hidden:这个是指当页面不是当前页面时为 true,否则为 false
  • document.visibilityState:这个属性有四个值,分为是:visible,hidden,prerender,unloaded

  • visible:表示当前网页是可见或者是部分可见的。
  • hidden:当前网页是不可见的
  • prerender:网页内容被预渲染并且用户不可见
  • unloaded:如果文档被卸载,那么这个值将被返回
实际操作效果如下:
document.onvisibilitychange=function(){
	console.log("hidden"+":"+document.hidden);
	console.log("visibilityState"+":"+document.visibilityState);
}

解决 setInterval 在浏览器切换中的问题

思路:如果页面是不可见的,那么我们就会清除定时器,如果页面是可见的,那么我们就重新开启定时器。

所以我们需要用 document.onvisibilitychange 进行监听,然后用 document.visibilityState 或者是 document.hidden 进行判断。

实际操作

document.onvisibilitychange=function(){
  if(document.visibilityState=="visible"){
      timer=setInterval(slidemove, 1000);
  }else{
      clearInterval(timer);
  }
}

jq 中 animate 的解决

如果用的是 jq 的 animate 这个方法,就只需要到这个方法的前面加上 stop(true, true)

$(".slidePanel").stop(true, true).animate({
	"left": -iNow*varWidth+"px",
	"speed":300
});
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐