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

简介:

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
});

作者:蜗牛君_
链接:https://juejin.im/post/5b30a4a451882574ba421b68
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
Web App开发 Windows
让网页自动调用双核浏览器的极速模式
让网页自动调用双核浏览器的极速模式
112 0
|
6月前
|
缓存 JavaScript 前端开发
浏览器渲染:理解页面加载的幕后工作
浏览器渲染:理解页面加载的幕后工作
|
6月前
|
缓存 安全 搜索推荐
解决2023新版Edge浏览器页面加载不出来问题
解决2023新版Edge浏览器页面加载不出来问题
282 0
|
消息中间件 Web App开发 移动开发
浏览器原理 37 # 任务调度:有了setTimeOut,为什么还要使用 requestAnimationFrame?
浏览器原理 37 # 任务调度:有了setTimeOut,为什么还要使用 requestAnimationFrame?
255 0
浏览器原理 37 # 任务调度:有了setTimeOut,为什么还要使用 requestAnimationFrame?
|
Web App开发 缓存 移动开发
浏览器渲染原理
浏览器渲染原理
浏览器渲染原理
|
存储 Web App开发 缓存
浏览器工作原理总结-页面渲染篇
在前段时间的面试中,许多候选人对于浏览器中代码的执行过程都不甚了解,多数是只停留在知道个大概。最近正好在极客时间上拜读了大神的浏览器工作原理,读完对浏览器工作原理有种豁然开朗之感,趁有空余时间就把自己对这块的理解整理了一下,希望对各位小伙伴能有所帮助吧。
|
缓存 JavaScript 算法
浏览器的渲染机制(一)下
浏览器的渲染机制(一)下
230 0
|
Web App开发 存储 缓存
浏览器渲染机制(二)上
浏览器渲染机制(二)上
312 0
浏览器渲染机制(二)上
|
Web App开发 JavaScript 前端开发
浏览器的渲染机制(一)上
浏览器的渲染机制(一)上
225 0
|
存储 缓存 JavaScript
浏览器渲染机制(二)下
浏览器渲染机制(二)下
480 0