如果我在Firefox 25.0.1 for Linux中使用setTimeout()或setInterval()创建计时器,然后将该选项卡拖到新窗口,计时器将停止触发。 Chrome在同一系统上不会发生这种情况。
有没有办法阻止这些计时器取消?如果我的所有定时器都被取消了,有没有办法检测到这个并重新启动不依赖于看门狗定时器的定时器,看门狗定时器本身会被取消?
我的代码如下(也可在http://jsfiddle.net/Kba2S/处获得)。在新的Firefox选项卡中运行代码,然后将选项卡拖到空白区域以创建新窗口。计时器将停止。
(function() {
var x = 0;
var y = 0;
function notice(msg) {
console.log("Notice: " + msg);
document.body.appendChild(
document.createTextNode(msg)
);
document.body.appendChild(
document.createElement('br')
);
}
function foo() {
notice('Timer ' + x);
x++;
setTimeout(foo, 1000);
}
foo();
setInterval(function() {
notice("Interval " + y);
y++;
}, 1500);
})();