离开页面后,定时器导致 DIV 运动加速,如何解决?

离开页面后,定时器导致 div 运动加速,如何解决?

js 定时器:离开当前页面,匀速运动的 div 加速

在你的 javascript 代码中,当离开浏览器的当前页面时,定时器没有被清除。这会导致 div 运动加速。为了解决这个问题,我们需要监听页面是否在浏览器当前页。

判断页面是否在当前页

可以使用 document.hidden 属性来判断页面是否在浏览器当前页。

不考虑兼容性的写法

document.addeventlistener("visibilitychange", function () {
  if (!document.hidden) {   //处于当前页面
    timer = setinterval(() => {
      rotate();
    }, 1000);
    console.log('active');
  } else {
    clearinterval(timer);
    console.log('hidden');
  }
});

考虑兼容性的写法

var hiddenProperty = 'hidden' in document ? 'hidden' :
  'webkitHidden' in document ? 'webkitHidden' :
    'mozHidden' in document ? 'mozHidden' :
      null;
var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange');
var onVisibilityChange = function () {
  if (!document[hiddenProperty]) {
    rotate();  //无间隙旋转
    timer = setInterval(() => {
      rotate();
    }, 1000);
    console.log(hiddenProperty);
  } else {
    clearInterval(timer)
    timer
  }
}
document.addEventListener(visibilityChangeEvent, onVisibilityChange);

以上就是离开页面后,定时器导致 DIV 运动加速,如何解决?的详细内容,更多请关注其它相关文章!