我正在测试setTimeout使用此测试的准确性.现在我注意到(正如预期的那样)setTimeout并不是非常准确,但对于大多数设备并不是非常不准确.现在,如果我在Chrome中运行测试并让它在后台标签中运行(那么,切换到另一个标签并在那里浏览),返回测试并检查结果(如果测试完成),它们会发生显着变化.看起来超时运行速度慢得多.在FF4或IE9中测试没有发生这种情况.
因此,看起来Chrome暂停或至少减慢了无法关注的标签中的javascript执行速度.关于这个问题在网上找不到多少.这意味着我们无法运行后台任务,例如使用XHR调用定期检查服务器,并且setInterval(我怀疑看到相同的行为setInterval,如果有时间,我会编写测试).
有没有遇到过这个?这种暂停/减速会有解决方法吗?你会把它称为一个错误,我应该这样提交吗?
我有一个使用jquery的setIntervall()函数无限滑动图像的网站.
在Chrome 13中调用页面时,我切换到另一个选项卡几秒钟后返回,图像滑动发生得更快,好像它试图保持到原来的状态,如果它没有切换到另一个选项卡.
我该如何解决这个问题?
$(window).load(function() {
setInterval(nextSlide, 3500);
});
function nextSlide(){
offset += delta;
$("#slideContent").animate({left: -1 * offset}, 1000);
}
Run Code Online (Sandbox Code Playgroud)
解:
我选择了jfriend00的第一个建议.现在,当窗口变为非活动状态时,我会关闭计时器.
可以在这里找到这样做的简单代码.