将Firefox选项卡拖动到新窗口时,有没有办法保留setTimeout()和setInterval()计时器?

时间:2013-12-11 20:18:01

标签: javascript firefox timer settimeout setinterval

如果我在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);
})();

0 个答案:

没有答案