setInterval(function() {})

setInterval(function() {
    console.log(new Date())
},500)
浏览器页面在serInterval当前页的时候,页面会每隔500毫秒正常执行,也就是每秒钟会打印两次当前时间,如果页面切到另外一个页面后停留了一段时间再切回来,
那么会发现 定时器在这个过程中变慢了,可能变成了每秒钟只打印了一次当前时间。这是浏览器偷懒了,你没有访问这个页面,他就会降低内存的消耗
复制代码

在做自动轮播的时候就可能会遇到以上这种情况,在页面切到其他页面停留一段时间后,再切回来发现轮播的banner出现了一小段时间的乱,然后再回归正常。

那么如果解决这个问题呢?

我们可以利用visibilitychange事件来监听页面是否可见
document.addEventListener('visibilitychange',function(e) {
    console.log(document.hidden)
})
当页面切走的时候回打印出 true 当页面切回来之后就打印出 false;
这个事件可以满足一些用户需求,比如标签页隐藏的时候停止播放音乐视频、停止一些不必要的轮询,还有停止一些诸如轮播等循环动画效果等等。这些可以节省服务器和本地的开销。
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值