看来,Chrome和Firefox *的最新版本有所改变,现在
Javascript的执行似乎不同,当它正在运行的选项卡不是当前的重点.
当我运行我的Javascript单元测试时,通常需要大约20秒才能完成,但现在,当该选项卡未被集中时,它需要超过2000秒.奇怪的是,每个测试的运行时间不受影响(大多数仍然是<10ms).我正在使用的测试运行器在运行每个测试之间添加一个setTimeout(0),以便浏览器在执行时不会被锁定,因此这似乎是可能的罪魁祸首. 有没有办法告诉Javascript引擎不是“不优先”那个选项卡呢?能够在后台运行我的测试是很好的,而不必看自己… *对不起,我不太在意,尝试安装旧版本,以便在发生这种情况时找到.至少现在,Firefox 5.0和Chrome 12正在发生.
解决方法
setTimeout和setInterval在未聚焦的选项卡中已经被限制在至少1000ms.
Here是Bugzilla报告,提到它.而这里就是类似的
Chromium bug report.我相信在Firefox 5和Chrome从11版起就是这种情况.
根据MDN:
In (Firefox 5.0 / Thunderbird 5.0) and
Chrome 11,timeouts are clamped to
firing no more often than once per
second (1000ms) in inactive tabs; see
bug 633421 for more information about
this in Mozilla or crbug.com/66078 for
details about this in Chrome.
至于绕过这个限制,你可以尝试在this article讨论的技术,但我还没有改变自己尝试.