浏览器页面处于不活跃状态时setInterval不定时执行

2022-11-06  本文已影响0人  耦耦

浏览器页面处于不活跃状态时setInterval不定时执行

1.问题背景

页面建立webSocket并设置定时保活机制,切换到后台或其他标签页一段时间后,定时器未按时调用,导致保活超时,ws closed

2.原因

当页面变为非活动状态时,WebKit 会自动采取措施来节省电量:

页面变为非活动状态(不是用户的主要焦点)的情况有多种,例如:

3.解决方案

使用 Web Workers。可以让浏览器窗口在非激活状态(或者最小化)也让setTimeout、setInterval有效不休眠的功能。

而且webWorkers还可以解决一个页面存在多个定时器时候间隔时间误差较大的问题。

4.交互状态

对于 Web 开发人员,需要考虑三种交互状态:

页面可见性监听:

5.参考:

上一篇 下一篇

猜你喜欢

热点阅读