2 lines
2.8 KiB
JavaScript
2 lines
2.8 KiB
JavaScript
(function(e){"use strict";var i=function(i){return i!=e},n=window.Visibility={onVisible:function(e){if(!n.isSupported()||!n.hidden())return e(),n.isSupported();var i=n.change(function(){n.hidden()||(n.unbind(i),e())});return i},change:function(e){if(!n.isSupported())return!1;n._lastCallback+=1;var i=n._lastCallback;return n._callbacks[i]=e,n._setListener(),i},unbind:function(e){delete n._callbacks[e]},afterPrerendering:function(e){if(!n.isSupported()||"prerender"!=n.state())return e(),n.isSupported();var i=n.change(function(r,t){"prerender"!=t&&(n.unbind(i),e())});return i},hidden:function(){return n._prop("hidden",!1)},state:function(){return n._prop("visibilityState","visible")},isSupported:function(){return i(n._prefix())},_doc:window.document,_prefixes:["webkit","moz"],_chechedPrefix:null,_listening:!1,_lastCallback:-1,_callbacks:{},_hiddenBefore:!1,_init:function(){n._hiddenBefore=n.hidden()},_prefix:function(){if(null!==n._chechedPrefix)return n._chechedPrefix;if(i(n._doc.visibilityState))return n._chechedPrefix="";for(var e,r=0;n._prefixes.length>r;r++)if(e=n._prefixes[r]+"VisibilityState",i(n._doc[e]))return n._chechedPrefix=n._prefixes[r]},_name:function(e){var i=n._prefix();return""==i?e:i+e.substr(0,1).toUpperCase()+e.substr(1)},_prop:function(e,i){return n.isSupported()?n._doc[n._name(e)]:i},_onChange:function(e){var i=n.state();for(var r in n._callbacks)n._callbacks[r].call(n._doc,e,i);n._hiddenBefore=n.hidden()},_setListener:function(){if(!n._listening){var e=n._prefix()+"visibilitychange",i=function(){n._onChange.apply(Visibility,arguments)};n._doc.addEventListener?n._doc.addEventListener(e,i,!1):n._doc.attachEvent(e,i),n._listening=!0,n._hiddenBefore=n.hidden()}}};n._init();var r={every:function(e,r,t){n._initTimers(),i(t)||(t=r,r=null),n._lastTimer+=1;var a=n._lastTimer;return n._timers[a]={interval:e,hiddenInterval:r,callback:t},n._runTimer(a,!1),n.isSupported()&&n._setListener(),a},stop:function(e){var r=n._timers[e];return i(r)?(n._stopTimer(e),delete n._timers[e],r):!1},_lastTimer:-1,_timers:{},_timersInitialized:!1,_initTimers:function(){n._timersInitialized||(n._timersInitialized=!0,n._setInterval=i(window.jQuery)&&i(jQuery.every)?n._chronoInterval:n._originalInterval,n.change(function(){n._timersStopRun()}))},_originalInterval:function(e,i){return setInterval(e,i)},_chronoInterval:function(e,i){return jQuery.every(i,e)},_setInterval:null,_runTimer:function(e,i){var r,t=n._timers[e];if(n.hidden()){if(null===t.hiddenInterval)return;r=t.hiddenInterval}else r=t.interval;i&&t.callback.call(window),t.id=n._setInterval(t.callback,r)},_stopTimer:function(e){var i=n._timers[e];clearInterval(i.id),delete i.id},_timersStopRun:function(){var e=n.hidden(),i=n._hiddenBefore;if(e&&!i||!e&&i)for(var r in n._timers)n._stopTimer(r),n._runTimer(r,!e)}};for(var t in r)Visibility[t]=r[t]})();
|