1

2つの別々のブラウザウィンドウを開いているとします。

function onload() {
    setTimeout("dosomething", 2000);
}

function dosomething() {
    $.ajax({
        url: "someurl",
        success: function (data) {
            document.write("Hello");
        }
    });
    setTimeout("dosomething", 2000);
}

ウィンドウにピントが合っているときだけ、2秒ごとにhelloが出力されるようにしたいと思います。ウィンドウにフォーカスがない場合、ユーザーがフォーカスされていないブラウザウィンドウをクリックするまで、タイマーは基本的に一時停止します(つまり、タイマーはカチカチ音をたてなくなり、何かが呼び出されません)。 Helloワードは引き続き印刷され、他のウィンドウはタイマーを停止します。その逆も同様です。

どうすればこれを達成できますか?

4

2 に答える 2

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;
}
于 2012-05-25T23:51:11.950 に答える
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;
    }
}
于 2012-05-25T22:56:09.470 に答える