当浏览器选项卡为后台时,setInterval无任何理由停止

时间:2012-04-15 20:13:59

标签: javascript ajax setinterval

我正在开发一个应用程序,它使用setInterval每隔2分钟使用AJAX将当前时间戳发送到数据库。

但不知何故setInterval在几分钟后停止(我没有计算确切的时间),但我相信它会在我打开浏览器的标签20-30分钟时发生。

function tmstmp() {
$.post("send_functions.php?act=time");
}

$(function() { 
setInterval(tmstmp, 60000);
});

如果该选项卡不在前台,那么setInterval会停止吗?

如果是,我如何阻止setInterval停止?或者检查它是否停止了?

谢谢

3 个答案:

答案 0 :(得分:1)

你应该尝试在页面启动时进行函数调用:

test();

并循环该功能:

function test() {
    setTimout(function() {
        // your code
        test();
    }, 2000);
}

答案 1 :(得分:0)

没有代码+没有调试信息=很难说出现了什么问题。

只是确保将以下行添加到使用setInterval执行的代码(方法)中,如果仍然在控制台中输出,则在20-30分钟后观看。

console.log('Yep! I am alive!');

编辑除了尝试更改 tmstmp 方法以在POST请求执行后包含回调函数,它可以是任何东西。这样你至少知道它有效。

function tmstmp() {
    $.post("send_functions.php?act=time", function(data){
        console.log('Yep! I am alive!');
    });
}

答案 2 :(得分:0)

这不应该发生。 浏览器确实可以将计时器分辨率降低到1 / s左右,但不能清除setInterval。

您的代码中是否存在导致clearInterval的错误?