我有一个非常正常的 setInterval
调用(我认为):
var myInterval = setInterval("myFunction('passVar1', 'passedVar2')", 8000);
如果我在页面上,它会完美运行,但如果我让页面打开一段时间(或最小化它?),当我回来时,就像它只是将所有 myFunction 调用构建到一个队列中并尝试真正快速地通过它们以“ catch ”。然后,当它追上来时,它会再次以 8 秒的间隔运行。
我做错了吗?我目前正在使用 Firefox 5——如果这与它有关的话。想法? TIA。
最佳答案
一方面,修复您的 setInterval
,使其不使用 eval:
var myInterval = setInterval(function(){
myFunction('passVar1', 'passedVar2')
}, 8000);
其次,这取决于浏览器的间隔做什么或不做什么。
更新:
根据下面的评论和这里的相关聊天讨论是一个使用 setTimeout
的 fiddle :
http://jsfiddle.net/maniator/VR7WE/
更新:
根据进一步讨论,原来是 jquery 的动画问题
以下 fiddle 仅在动画完成时运行超时:http://jsfiddle.net/maniator/c869Z/5/
关于页面最小化/离开后的Javascript setInterval "catches up",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523238/