唯品秀前端博客
当前位置: 前端开发 > JavaScript > 浏览器切换标签/隐藏 – js定时器会变缓慢Bug解决办法

浏览器切换标签/隐藏 – js定时器会变缓慢Bug解决办法

2017-05-03 分类:JavaScript 作者:管理员 阅读(13968)

问题摘要

首先说说这个问题具体是个什么情况,最近我在进行博客改版,然后我发现一件十分诡异的事,网站头部公告(上下滚动)轮播在当前打开页面是正常的,但是,一旦博客窗口被隐藏(离开视线),然后重新切换到我博客再看的时候发现公告文字轮播疯狂执行,后来经过一番探究证实是因为-浏览器切换标签js定时器会变缓慢,当重新切换到当前窗口之前变慢的定时器堆积在一起便开始疯狂执行。这个问题在什么情况下发生我也不清楚,因为上个博客版本也是这段代码,但并没出现这个问题

问题解决方案

查了不少资料,最终发现这个问题其实我们经常遇到过,只是平时没在浏览器切换窗口才发生,所以一时毫无头绪。

方案1: 如果您使用的是jQuery,在jq版本里每次在animate前加上 $(obj).stop(true,true); 可以解决

1
2
3
4
5
6
7
8
9
//首页公告开始
setInterval(function(){
    $(".notice").show();
    $(".notice ul").stop(true,true).animate({"top":"-20px"},function(){
        var node = $(".notice ul li:eq(0)").remove();
        $(".notice ul").append(node);
                    $(".notice ul").css("top","0");
    });
},3500);

方案2:通过浏览器的焦点去执行该js(我也是才知道window窗口也是有焦点事件的)

1
2
3
4
5
6
7
8
var timer=null;
window .onfocus=function(){
    timer=setInterval(autoRun,1000);
}

window.onblur=function(){
    clearInterval(timer);
}

「两年博客,如果觉得我的文章对您有用,请帮助本站成长」

赞(9) 打赏

谢谢你请我吃鸡腿*^_^*

支付宝
微信
9

谢谢你请我吃鸡腿*^_^*

支付宝
微信
标签:

上一篇:

下一篇:

你可能感兴趣

共有 0 条评论 - 浏览器切换标签/隐藏 – js定时器会变缓慢Bug解决办法

博客简介

唯品秀博客: weipxiu.com,一个关注Web前端开发技术、关注用户体验、坚持更多原创实战教程的个人网站,愿景:成为宇宙中最具有代表性的前端博客,期待您的参与 

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 231 篇
  • 草稿数目: 0 篇
  • 分类数目: 14 个
  • 独立页面: 6 个
  • 评论总数: 847 条
  • 链接总数: 12 个
  • 标签总数: 416 个
  • 建站时间: 980 天
  • 注册用户: 1856 人
  • 访问总量: 8652983 次
  • 最近更新: 2019年8月22日
服务热线:
 173xxxx7240

 QQ在线交流

 旺旺在线