浏览器选项卡切换后计时器的问题

helixcg 2016-11-23 10:42:58
var slideritem=document.getElementsByClassName('J_slider_item')//广告图片
var sliderbtn=document.getElementsByClassName('slider_indicator_btn')//图片按钮
var i=0,timer1=null,timer =null,z=0,y=200,st=0,f=0,g=1;
function sss(){
clearInterval(timer);
clearInterval(timer1);
timer=setInterval(function(){
clearInterval(timer1);
timer1=setInterval(function(){
++z;
--y;
f=(z/200);
g=(y/200);
if (f>=1) {
f=1;
z=0;
}
if (g<=0) {
g=0;
y=200;
}
if (i==0) {
st=8;
}
slideritem[st].style.opacity=g;
slideritem[st].style.zIndex=g;
slideritem[i].style.opacity=f;
slideritem[i].style.zIndex=f;
if (g==0) {
clearInterval(timer1);
}
}, 1);
i++;
st=i-1;
if (i==0) {
st=8
}
if (i==9) {
i=0;
}
sliderbtn[st].style.backgroundColor="#fff";
sliderbtn[i].style.backgroundColor="red";
},4000) ;
};
window.onfocus=sss();





//问题解释:点开页面之后如果选项卡不切换走,焦点一直在这个页面的话,就不会出任何问题。
//如果选项卡切换到其它页面,过十几秒、二十秒回来后,发现页面透明度就不准确了。
...全文
305 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bhbhxy 2016-11-23
  • 打赏
  • 举报
回复
浏览器会在页面失去焦点时自动降低执行频率以提升性能,用定时器会出现问题,需要在页面失去焦点时暂停定时器,即不让代码继续执行。得到焦点以后继续运行代码。

87,995

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧