在未聚焦的标签中运行时的JavaScript性能

看来,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讨论的技术,但我还没有改变自己尝试.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...