1

我有一个简单的倒计时脚本(jsFiddle)。

var time = 60;
function countDown(timeLeft){
     $("#timeLeft").text(timeLeft);
    if(timeLeft!=0){
        setTimeout(function(){ countDown(--timeLeft); }, 1000);   
    }
}
countDown(time);

出于某种原因,如果我在 Chrome 中运行它并专注于不同的选项卡,计时器的速度比应有的慢两倍......所以当我在手机上同时运行独立计时器时,它会正常运行,而当我用我的计时器将注意力重新回到选项卡上,它显示还剩 30 秒。当包含脚本的选项卡处于焦点时它工作得很好,只有当它在后台打开时它才会变得特别慢。它不会发生在 Firefox 中。这是某种奇怪的错误还是我做错了什么?

4

1 回答 1

1

问题是你设置了太多的 setTimeout 函数,当 time = 60 时,有 60 个 setTimeout,所以它们会损害你的性能。您可以改用 setInterval :

function countDown(timeLeft){
 var intervalProc = setInterval(function(){
  $("#timeLeft").text(timeLeft);
  timeLeft--;
  if(timeLeft <= 0){
   clearInterval(intervalProc);
  }
 })

}
于 2013-07-13T06:12:03.780 回答