我有一个简单的倒计时脚本(jsFiddle)。
var time = 60;
function countDown(timeLeft){
$("#timeLeft").text(timeLeft);
if(timeLeft!=0){
setTimeout(function(){ countDown(--timeLeft); }, 1000);
}
}
countDown(time);
由于某种原因,如果我在Chrome中运行它并专注于其他选项卡,则计时器会比应有的速度慢两倍...因此,当我同时在手机上运行独立计时器时,计时器正常运行用我的计时器将焦点移回到选项卡,它显示还剩约30秒。当包含脚本的选项卡处于焦点位置时,它工作得很好,只有在后台打开时,它的运行速度才特别慢。在Firefox中不会发生这种情况。是某种奇怪的错误还是我做错了什么?
最佳答案
问题是您设置了太多setTimeout函数,时间= 60,有60个setTimeouts,因此它们会损害您的性能。您可以改用setInterval:
function countDown(timeLeft){
var intervalProc = setInterval(function(){
$("#timeLeft").text(timeLeft);
timeLeft--;
if(timeLeft <= 0){
clearInterval(intervalProc);
}
})
}
关于javascript - Chrome setTimeout()计时问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17627442/