假设我打开了两个单独的浏览器窗口:
function onload() {
setTimeout("dosomething", 2000);
}
function dosomething() {
$.ajax({
url: "someurl",
success: function (data) {
document.write("Hello");
}
});
setTimeout("dosomething", 2000);
}
我想让它仅在窗口处于焦点状态时每两秒打印一次 hello。如果窗口未获得焦点,则计时器本质上会暂停(换句话说,计时器将停止计时,不会调用执行某些操作),直到用户单击未获得焦点的浏览器窗口,计时器将恢复该窗口并Hello 单词将继续打印,而另一个窗口将停止计时器,反之亦然。
我该如何实现这个目标?
最佳答案
这是一个棘手的问题,并且取决于浏览器。
var timer;
function onBlur() {
timer = setTimeout("dosomething", 2000);
};
function onFocus(){
clearTimeout(timer);
};
if (/*@cc_on!@*/false) { // check for Internet Explorer
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else {
window.onfocus = onFocus;
window.onblur = onBlur;
}
关于Javascript仅在窗口处于焦点时才执行计时器函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10762200/