yuesha
yuesha
发布于 2024-05-30 / 797 阅读 / 0 评论 / 0 点赞

发现一个浏览器定时器休眠的情况

写在前面

最近在看小说,起点的限免频道,发现了一个js的小毛病

起点前端的页面有个“限免剩余时间”的定时器,我打开之后去别的网页浏览一段时间回来之后,发现定时器走的时间跟我离开的时长不符,然后就在研究这个发生的原因。

限免剩余时间

原因

发现是这个标签页面,在我离开这个页面(切换到别的标签的时候),定时器休眠了,页面js部分应该都停止运行了。

然后再回来的时候,并不会从服务器校正时间,而是直接继续倒计时。

所以造成了这个bug

解决

翻了一下文档,发现js有个visibilitychange事件,可以监听窗口隐藏和显示状态,在这里如果进行一次时间校准(从服务器请求时间戳),那么就可以解决这个bug


评论