jQuery.active函数

我试图find更多关于以下jQuery函数的信息:

jQuery.active 

这里描述的是testing到服务器的活动连接的数量,并且当连接数为零时评估为真。

http://agilesoftwaretesting.com/?p=111

http://web.elctech.com/2008/11/10/jquery-ajax-loading-and-selenium-respec-testing/

我无法在jQuery网站上find关于此function的任何信息,并想知道是否有人知道我在哪里。

这是一个jQuery内部使用的variables,但没有理由隐藏,所以它在那里使用。 刚刚起来, 它成为jquery.ajax.active下一个版本 。 有没有文档,因为它是暴露的,但不是在官方的API,很多事情是这样的,如jQuery.cache (所有的jQuery.data()去)。

我在这里通过在库中的实际用法来猜测,它似乎是专门支持$.ajaxStart()$.ajaxStop() (我会进一步解释),但他们只关心,如果它是0或不请求开始或停止。 但是,由于没有理由隐藏它,因此可以看到当前正在进行的同时发生的 AJAX请求的实际数量。


当jQuery启动一个AJAX请求时, 会发生这种情况 :

 if ( s.global && ! jQuery.active++ ) { jQuery.event.trigger( "ajaxStart" ); } 

这是导致$.ajaxStart()事件触发的原因,连接数量从0到1( jQuery.active++在这个之后不为0, !0 == true ),这意味着第一个当前同时请求已开始。 同样的事情发生在另一端。 当一个AJAX请求停止时(因为beforeSend通过return false或ajax调用complete函数运行 ):

 if ( s.global && ! --jQuery.active ) { jQuery.event.trigger( "ajaxStop" ); } 

这是导致$.ajaxStop()事件触发的原因,请求数量下降到0,这意味着上一次同时发生的 AJAX调用完成。 其他全球的AJAX处理程序也在这里开火。

对于任何人尝试使用jQuery.active与JSONP请求(就像我),你需要启用它与此:

 jQuery.ajaxPrefilter(function( options ) { options.global = true; }); 

请记住,您需要在JSONP请求上超时以捕获失败。