diff --git a/js/detector.js b/js/detector.js index 91ea058..b6959fb 100644 --- a/js/detector.js +++ b/js/detector.js @@ -13,6 +13,8 @@ var detector = list: [], }, + visible: true, + width: 400, height: 400, @@ -268,6 +270,10 @@ var detector = addEventExternal: function() { + if (!detector.visible) { + return; + } + var num = Math.min(30 * achievements.count.workers / 10, 30); for (var i = 0; i < num; i++) { diff --git a/js/ui.js b/js/ui.js index 6e1492a..5ebec90 100644 --- a/js/ui.js +++ b/js/ui.js @@ -7,3 +7,37 @@ $(function() { $('.scrollable').height(h + 'px'); }); }); + +(function() { + var hidden = "hidden"; + + // Standards: + if (hidden in document) + document.addEventListener("visibilitychange", onchange); + else if ((hidden = "mozHidden") in document) + document.addEventListener("mozvisibilitychange", onchange); + else if ((hidden = "webkitHidden") in document) + document.addEventListener("webkitvisibilitychange", onchange); + else if ((hidden = "msHidden") in document) + document.addEventListener("msvisibilitychange", onchange); + // IE 9 and lower: + else if ('onfocusin' in document) + document.onfocusin = document.onfocusout = onchange; + // All others: + else + window.onpageshow = window.onpagehide + = window.onfocus = window.onblur = onchange; + + function onchange (evt) { + var v = 'visible', h = 'hidden', + evtMap = { + focus:v, focusin:v, pageshow:v, blur:h, focusout:h, pagehide:h + }; + + evt = evt || window.event; + if (evt.type in evtMap) + detector.visible = evtMap[evt.type] == 'visible'; + else + detector.visible = !this[hidden]; + } +})(); \ No newline at end of file