idle handling - treat the window being hidden as idle, even if the idle time wasn't reached

This commit is contained in:
Jon Atkins 2013-06-15 19:29:16 +01:00
parent 3d324a8730
commit 0b1957464b
2 changed files with 14 additions and 1 deletions

View File

@ -1,6 +1,7 @@
// IDLE HANDLING ///////////////////////////////////////////////////// // IDLE HANDLING /////////////////////////////////////////////////////
window.idleTime = 0; // in seconds window.idleTime = 0; // in seconds
window.isHidden = false;
var IDLE_POLL_TIME = 10; var IDLE_POLL_TIME = 10;
@ -40,6 +41,18 @@ $('body').keypress(idleReset);
$('body').mousemove(idleMouseMove); $('body').mousemove(idleMouseMove);
window.isIdle = function() { window.isIdle = function() {
if (window.idleTime < window.REFRESH) {
// if idle for less than the refresh time ignore 'hidden' state - likely initial page load in the background
return false;
}
var hidden = (document.hidden || document.webkitHidden || document.mozHidden || document.msHidden);
if (hidden) {
// window hidden - force an idle state even if below the idle time limit
return true;
}
// otherwise use the idle time limit
return window.idleTime >= MAX_IDLE_TIME; return window.idleTime >= MAX_IDLE_TIME;
} }

View File

@ -120,7 +120,7 @@ window.requests._callOnRefreshFunctions = function() {
startRefreshTimeout(); startRefreshTimeout();
if(isIdle()) { if(isIdle()) {
console.log('user has been idle for ' + idleTime + ' seconds. Skipping refresh.'); console.log('user has been idle for ' + idleTime + ' seconds, or window hidden. Skipping refresh.');
renderUpdateStatus(); renderUpdateStatus();
return; return;
} }