JavaScript 中当我们切换浏览器的时候,setInterval 会加快速度
导致这个原因是:发现这是因为浏览器本着节省内存的性质,当切换到其他页面时,采油系统页面的定时器不运动,但是动画依然排列,当切换回来的时候,动画加速运动,出现错误,在轮播图之类的页面经常会发生这样的情况。
在这里我们需要用到以下三个知识点:
document.onvisibilitychange=function(){
console.log("hidden"+":"+document.hidden);
console.log("visibilityState"+":"+document.visibilityState);
}
思路:如果页面是不可见的,那么我们就会清除定时器,如果页面是可见的,那么我们就重新开启定时器。
所以我们需要用 document.onvisibilitychange 进行监听,然后用 document.visibilityState 或者是 document.hidden 进行判断。
实际操作
document.onvisibilitychange=function(){
if(document.visibilityState=="visible"){
timer=setInterval(slidemove, 1000);
}else{
clearInterval(timer);
}
}
如果用的是 jq 的 animate 这个方法,就只需要到这个方法的前面加上 stop(true, true)
$(".slidePanel").stop(true, true).animate({
"left": -iNow*varWidth+"px",
"speed":300
});
