JavaScript 中如何解决离开页面后定时器导致 div 加速转动的问题?
离开当前页面后,定时器控制下的 div 加速转动,恢复后恢复匀速
在 javascript 中,定时器用来在指定时间间隔执行代码块。在示例代码中,定时器被用来让一个 div 元素在页面上以匀速旋转。但是,当用户离开当前页面时,定时器不会被清除,导致 div 加速转动。
为了解决这个问题,我们需要检测页面是否在浏览器的当前选项卡中。可以使用 document.hidden 属性来做到这一点。当用户离开当前页面时,document.hidden 的值为 true,否则为 false。
不考虑兼容性
如果不考虑兼容性,可以使用以下代码:
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);
以上就是JavaScript 中如何解决离开页面后定时器导致 div 加速转动的问题?的详细内容,更多请关注其它相关文章!