假设我打开了两个单独的浏览器窗口:
function onload() {
setTimeout("dosomething", 2000);
}
function dosomething() {
$.ajax({
url: "someurl",
success: function (data) {
document.write("Hello");
}
});
setTimeout("dosomething", 2000);
}
我想这样做只有当窗口处于焦点时才会每两秒打印一次。如果窗口没有聚焦,那么计时器将基本上暂停(换句话说,计时器将停止滴答,不会调用dosomething),直到用户点击未对焦的浏览器窗口,计时器将恢复并且Hello字会继续打印,而另一个窗口会停止计时器,反之亦然。
我如何做到这一点?
答案 0 :(得分:0)
var someVar = false;
window.onfocus = function() { someVar = true; };
window.onblur = function() { someVar = false; };
var time;
function timer(someVar) {
if (someVar == true) {
setTimeOut('time++', 1);
}
}
function something() {
time = 0;
while (time <= 2000) {
timer(someVar);
document.getElementById('time').innerHTML = time;
}
}
答案 1 :(得分:0)
这很棘手,取决于浏览器。
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;
}