WordPress/wp-includes/js/heartbeat.min.js
Bot (Assets) 7583005842 Compress scripts/styles: 3.6-beta3-24270.
git-svn-id: http://core.svn.wordpress.org/trunk@24270 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-05-16 00:58:56 +00:00

1 line
3.9 KiB
JavaScript

window.wp=window.wp||{};(function(a){var b=function(){var s=this,e,c,B,m=typeof pagenow!="undefined"?pagenow:"",h=typeof ajaxurl!="undefined"?ajaxurl:"",C,A=0,w={},D,i,q=0,z=0,x,f=true,p,j,g,v=-1;this.autostart=true;this.connectionLost=false;if(typeof(window.heartbeatSettings)!="undefined"){C=window.heartbeatSettings;B=C.nonce||"";delete C.nonce;h=C.ajaxurl||h;delete C.ajaxurl;D=C.interval||15;delete C.interval;if(D<5){D=5}else{if(D>60){D=60}}D=D*1000;m=m||C.screenid||"site";delete C.screenid;a.extend(this,C)}function k(F){if(F){return parseInt((new Date()).getTime()/1000)}return(new Date()).getTime()}function y(G){try{if(G.contentWindow.document){return true}}catch(F){}return false}function u(G){var F;if(G){switch(G){case"abort":break;case"timeout":F=true;break;case"parsererror":case"error":case"empty":case"unknown":z++;if(z>2){F=true}break}if(F&&!s.connectionLost){s.connectionLost=true;a(document).trigger("heartbeat-connection-lost")}}else{if(s.connectionLost){z=0;s.connectionLost=false;a(document).trigger("heartbeat-connection-restored")}}}function d(){var I={},H,F,G=true;A=k();H=a.extend({},w);w={};a(document).trigger("heartbeat-send",[H]);for(F in H){if(H.hasOwnProperty(F)){G=false;break}}if(G){i=false;t();return}I.data=H;I.interval=D/1000;I._nonce=B;I.action="heartbeat";I.screenid=m;I.has_focus=f;i=true;s.xhr=a.ajax({url:h,type:"post",timeout:30000,data:I,dataType:"json"}).done(function(K,N,L){var M,J;if(!K){return u("empty")}if(s.connectionLost){u()}if(K.heartbeat_interval){M=K.heartbeat_interval;delete K.heartbeat_interval}s.tick(K,N,L);if(M){s.interval.call(s,M)}}).always(function(){i=false;t()}).fail(function(K,L,J){u(L||"unknown");s.error(K,L,J)})}function t(){var G=k()-A,F=D;if(!e){return}if(!f){F=120000}else{if(q>0&&x){F=x;q--}}window.clearTimeout(c);if(G<F){c=window.setTimeout(function(){if(e){d()}},F-G)}else{d()}}function o(){window.clearTimeout(g);window.clearTimeout(v);g=v=0;f=false}function n(){window.clearTimeout(g);window.clearTimeout(v);g=v=0;p=k();if(f){return}f=true;window.clearTimeout(c);if(!i){t()}}function r(){a("iframe").each(function(F,G){if(!y(G)){return}if(a.data(G,"wp-heartbeat-focus")){return}a.data(G,"wp-heartbeat-focus",1);a(G.contentWindow).on("focus.wp-heartbeat-focus",function(H){n()}).on("blur.wp-heartbeat-focus",function(H){r();v=window.setTimeout(function(){o()},500)})})}a(window).on("blur.wp-heartbeat-focus",function(F){r();g=window.setTimeout(function(){o()},500)}).on("focus.wp-heartbeat-focus",function(){a("iframe").each(function(F,G){if(!y(G)){return}a.removeData(G,"wp-heartbeat-focus");a(G.contentWindow).off(".wp-heartbeat-focus")});n()});function E(){j=false;a(document).off(".wp-heartbeat-active");a("iframe").each(function(F,G){if(!y(G)){return}a(G.contentWindow).off(".wp-heartbeat-active")});n()}function l(){var F=p?k()-p:0;if(F>300000&&f){o()}if(!j){a(document).on("mouseover.wp-heartbeat-active keyup.wp-heartbeat-active",function(){E()});a("iframe").each(function(G,H){if(!y(H)){return}a(H.contentWindow).on("mouseover.wp-heartbeat-active keyup.wp-heartbeat-active",function(){E()})});j=true}}window.setInterval(function(){l()},30000);if(this.autostart){a(document).ready(function(){e=true;A=k();t()})}this.hasFocus=function(){return f};this.interval=function(G){var F,H;if(G){switch(G){case"fast":H=5;q=30;break;case"slow":H=60;q=0;break;case"long-polling":D=0;return 0;break;default:H=15;q=0}F=H*1000<D;if(q>0){x=H*1000}else{D=H*1000;x=0}if(F){t()}}if(!f){return 120}return x?x/1000:D/1000};this.start=function(){if(e){return false}e=true;d();return true};this.stop=function(){if(s.xhr&&s.xhr.readyState!=4){s.xhr.abort()}u();e=false;return true};this.enqueue=function(H,G,F){if(H){if(w.hasOwnProperty(H)&&F){return false}w[H]=G;return true}return false};this.isQueued=function(F){return w[F]}};a.extend(b.prototype,{tick:function(d,e,c){a(document).trigger("heartbeat-tick",[d,e,c])},error:function(d,e,c){a(document).trigger("heartbeat-error",[d,e,c])}});wp.heartbeat=new b()}(jQuery));