有没有人知道如何使用ajaxStop()的功能而不需要jQuery的开销?我已经尝试在jQuery的GitHub页面上查看源代码,但是我无法找到它或知道要查看哪些文件。
答案 0 :(得分:2)
你可以拦截每个ajax呼叫并自己跟踪它。这应该给你一个想法:
var interceptor = (function(open) {
var activeXhr = [];
XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
this.addEventListener('readystatechange', function() {
switch(this.readyState){
case 1: // opened request
activeXhr.push(this);
break;
case 4: // request done
var i = activeXhr.indexOf(this);
if(i > -1)
activeXhr.splice(i, 1); // remove finished request
if(!activeXhr.length) // if all requests are done
console.log('ajax stop');
break;
}
}, false);
open.call(this, method, url, async, user, pass);
};
})(XMLHttpRequest.prototype.open);
$.ajax({ url: '/echo/json/', data: { delay: 1 } });
$.ajax({ url: '/echo/json/', data: { delay: 2 } });
$.ajax({ url: '/echo/json/', data: { delay: 3 } });