我有一个简单的倒计时脚本 ( jsFiddle )。
var time = 60;
function countDown(timeLeft){
$("#timeLeft").text(timeLeft);
if(timeLeft!=0){
setTimeout(function(){ countDown(--timeLeft); }, 1000);
}
}
countDown(time);
出于某种原因,如果我在 Chrome 中运行它并专注于不同的选项卡,计时器会比应有的速度慢两倍...因此,当我同时在手机上运行独立计时器时,它会正常运行当我用计时器将注意力集中回选项卡时,它显示还剩大约 30 秒。当包含脚本的选项卡处于焦点时,它工作得很好,只有当它在后台打开时,它才会变得特别慢。在 Firefox 中不会发生这种情况。这是某种奇怪的错误还是我做错了什么?
最佳答案
问题是你设置了太多的setTimeout函数,当time = 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/