311d7429d0
git-svn-id: https://develop.svn.wordpress.org/trunk@23883 602fd350-edb4-49c9-b593-d223f7449a82
1 line
4.0 KiB
JavaScript
1 line
4.0 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 F={};A=k();F.data=a.extend({},w);w={};a(document).trigger("heartbeat-send",[F.data]);F.interval=D/1000;F._nonce=B;F.action="heartbeat";F.screenid=m;F.has_focus=f;i=true;s.xhr=a.ajax({url:h,type:"post",timeout:30000,data:F,dataType:"json"}).done(function(I,K,H){var J,G;if(!I){return u("empty")}if(s.connectionLost){u()}J=I.heartbeat_interval;delete I.heartbeat_interval;s.tick(I,K,H);if(J){s.interval.call(s,J)}}).always(function(){i=false;t()}).fail(function(H,I,G){u(I||"unknown");s.error(H,I,G)})}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;if(s.debug){console.log("### blurred(), slow down...")}}function n(){window.clearTimeout(g);window.clearTimeout(v);g=v=0;p=k();if(f){return}f=true;window.clearTimeout(c);if(!i){t()}if(s.debug){console.log("### focused(), speed up... ")}}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();if(s.debug){console.log("userIsActive()")}}function l(){var F=p?k()-p:0;if(s.debug){console.log("checkUserActive(), lastActive = %s seconds ago",parseInt(F/1000)||"null")}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()}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)); |