我有一个每秒倒计时的计时器。在用户打开我的网站的 3 或 4 个标签之前,它的效果很好,此时最新标签的计时器会以两倍或三倍的速度运行。我目前只能重现 IE8 中的错误。我以前使用 setInterval,也可以在 Firefox 中重现该错误。
我实际上使用的是 FBJS(Facebook 的 Javascript),所以我只给出一些伪代码。
function countDown() {
...
setTimeout(function() { countDown() }, 1000);
}
countDown();
然而,我真正在寻找的是更多的理论。我知道浏览器可以尝试使用 setInterval 来“追赶”,但是多个选项卡如何导致 setTimeout 出现这种行为?