【发布时间】:2013-03-30 02:41:52
【问题描述】:
背景:我正在做一些用户界面测试,需要检测人们是否在注意。但是,这个问题不是关于the page visibility API。
具体来说,我想知道如果当前选项卡不活动,或者浏览器窗口不活动,在不同的浏览器中,我的 Javascript 代码将如何受到影响。到目前为止,我已经挖掘了以下内容:
- ios 5 pauses javascript when tab is not active
-
setIntervalandsetTimeoutdelay is reduced when tabs are not active - 这似乎是最近才开始出现的,并且可能会在其他事情上弄乱 Jasmine 单元测试。 -
requestAnimationFrame在标签不活动时变慢(合理,想不出为什么这会对任何人造成太大影响)
我有以下问题:
- 除了移动浏览器,桌面浏览器是否会在选项卡不活动时暂停 JS 执行?何时使用哪些浏览器?
- 哪些浏览器减少了
setInterval重复?它只是减少到一个限制还是一个百分比?例如,如果我有 10 毫秒的重复和 5000 毫秒的重复,它们会受到怎样的影响? - 如果窗口 失焦,而不仅仅是标签,是否会发生这些变化? (我想它会更难检测,因为它需要 OS API。)
- 是否还有其他在活动选项卡中无法观察到的效果?他们会不会把本来可以正确执行的事情搞砸(即前面提到的 Jasmine 测试)?
【问题讨论】:
-
如果它们被暂停,像 Facebook 这样的网站将不会在后台选项卡上收到任何聊天消息。
-
是的,没有暂停,但我记得读取的
setInterval987654328setTimeout987654329setTimeout987654329 @ ince in 1000ms的@次在选项卡/窗口模糊时更改为1000ms span> -
@ProfPickle 网站管理员?真的吗?这是一道 JS 编程题。
-
@lan
setInterval/setTimeout当标签/窗口模糊时,1000ms 以下的时间更改为 1000ms。不清楚你试图传达什么 -
+1 好问题。最好看到浏览器行为的并排比较,因为我相信标签不活动时的钳制行为不是任何标准的一部分。
标签: javascript browser