このような何かがそれを行う必要があります。ニーズに合わせて調整できるはずです。私は基本的に、あなたがリンクしたSOの質問からコードをコピーしました。これにより、本体にアクティブ/非アクティブ クラスが追加されます。私のコードを実行すると、これが表示されます。ページがアクティブな場合、画面は青色です。これは、リフレッシュが行われることを示します。画面が灰色の場合は、リフレッシュする必要はありません。
次に、コードにアクティブ/非アクティブ クラスのチェックを入れるだけです。
http://jsfiddle.net/scgEs/1
var refreshrate = 4000;
var inactivitytime = 15000;
var refreshid; //set to global scope so that you can clear it later
var activityTimeoutId; //store timeout for inactivity
$('#sbox').slideUp();
$('#toggle').click(function() {
$('#sbox').slideDown('fast');
refreshId = setInterval(function() {
if ($('body.inactive').length == 1) {
$('#sbox').append('<div>No refresh</div>');
}
else {
console.log('Refreshing data');
$('#sbox').append('<div>Refreshed...</div>');
//$('#shout').load('shout.php?randval=' + Math.random());
}
}, refreshrate);
return false;
});
// If theres no activity for X seconds do something
activityTimeoutId = setTimeout(inActive, inactivitytime);
function resetActive() {
$(document.body).attr('class', 'active');
clearTimeout(activityTimeoutId);
activityTimeoutId = setTimeout(inActive, inactivitytime);
}
// No activity do something.
function inActive() {
$(document.body).attr('class', 'inactive');
}
// Check for mousemove, could add other events here such as checking for key presses ect.
$(document).bind('mousemove', function() {
resetActive()
});