1
说我有两个单独的浏览器窗口打开:只有当窗口焦点时,Javascript才会执行定时器功能?
function onload() {
setTimeout("dosomething", 2000);
}
function dosomething() {
$.ajax({
url: "someurl",
success: function (data) {
document.write("Hello");
}
});
setTimeout("dosomething", 2000);
}
我想要让这个招呼每两秒钟打印,只有当窗口处于焦点。如果窗口没有焦点,那么定时器将基本上暂停(换句话说,定时器将停止滴答,不会调用dosomething),直到用户点击未聚焦的浏览器窗口,计时器将恢复并且你好词将继续被打印,而另一个窗口将停止计时器,反之亦然。
我该如何做到这一点?
**永不**将字符串传递给'setInterval()'或'setTimeout()'。这样做与使用'eval()'一样糟糕,并且只要使用变量,就会导致不可读和可能不安全的代码,因为您需要将它们插入到字符串中,而不是传递实际变量。正确的解决方案是'setInterval(function(){/ * your code *)},msecs);'。 'setTimeout()'同样适用。如果你只想调用一个没有任何参数的函数,你也可以直接传递函数名:'setInterval(someFunction,msecs);'(注意函数名后面有** no **'()') – ThiefMaster