javascript代码片段集

settimeout与setInterval在浏览器tab切换页面后可能不工作问题解决方案

setInterval跟settimeout浏览器tab切换页面后可能不工作问题,这主要是由于浏览器的优化机制,在切换tab之后浏览器会把setInterval跟settimeout的执行效率降低,在浏览器窗口非激活的状态下会停止工作或者以极慢的速度工作。
1000毫秒循环一次会变得越来越慢,3000,5000,甚至会停止循环,直到再次切回页面时激活,导致做一些商城活动倒计时之类功能时出现倒计时不准确等BUG。
这样可以通过监听 visibilitychange 来切出切回重新开启倒计时计算的方式优化:

const visibilitychange = () => {
      document.addEventListener('visibilitychange', function() {
        if (document.visibilityState === 'hidden') {
            console.log('页面离开')
        } else {
            console.log('页面回来')
        }
      });
    }