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

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

作者: 耦耦 | 来源:发表于2022-11-06 11:23 被阅读0次

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

1.问题背景

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

2.原因

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

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

  • 用户切换到不同的选项卡。
  • 用户切换到不同的应用程序。
  • 浏览器窗口最小化。
  • 浏览器窗口可见但不是焦点窗口。
  • 浏览器窗口位于另一个窗口的后面。
  • 窗口所在的空间不是当前空间。

3.解决方案

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

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

4.交互状态

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

  • 当用户主动与内容交互时。
  • 当页面位于最前面,但用户没有与之交互时。
  • 当页面不是最前面的内容时。

页面可见性监听:

  • 页面可见性 API提供了一种方法来响应页面转换到后台或前台。这是避免在页面处于后台时更新 UI
  • blur只要页面不再聚焦,就会发送事件。在这种情况下,页面可能仍然可见,但它不是当前聚焦的窗口。

5.参考:

相关文章

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

    浏览器页面处于不活跃状态时setInterval不定时执行 1.问题背景 页面建立webSocket并设置定时保活...

  • js轮播的bug

    切换标签页setInterval不工作BUG 浏览器有一个BUG,当页面标签切换时,setInterval回不工作...

  • vue定时器实现打包进度条

    需求:定时器循环执行更新进度条状态,到达终态时定时器停止实现:setInterval和clear实现循环执行函数,...

  • 两种定时器

    介绍两种定时器 setInterval setTimeout setInterval(循环执行) 含义:每隔一段时...

  • 定时器

    定时器 setInterval(函数,毫秒); 重复执行 clearIntrval(setInterval(函数...

  • 2021-vue-基础语法

    1、mounted 当页面加载完自动执行的函数setInterval 定时器方法 2、v-v-on :绑定事件...

  • 不会停下的setInterval

    关于定时器,如果把浏览器最小化或者看其他页面的时候,页面都会处于未激活状态,也就是对于chrome定时器会变1s运...

  • JQuery学习

    今日任务 使用JQuery完成页面定时弹出广告 定时器: ​ setInterval clearInt...

  • 前端,倒计时

    setTimeout 只执行一次定时器clearTimeout 关闭执行一次定时器setInterval 反复执行...

  • 倒计时

    setTimeout 只执行一次定时器clearTimeout 关闭执行一次定时器setInterval 反复执行...

网友评论

      本文标题:浏览器页面处于不活跃状态时setInterval不定时执行

      本文链接:https://www.haomeiwen.com/subject/bfpbtdtx.html