我想知道是否有可能“钩住”每一个AJAX请求(无论是在它即将被发送时,还是在事件上),并执行一个操作。此时,我假设页面上还有其他第三方脚本。其中一些可能使用jQuery,而另一些则不使用。这可能吗
注意:接受的答案不会产生实际响应,因为它被呼叫的时间太早。
您可以这样做,这将在全局范围内截取任何AJAX,而不会破坏任何第三方AJAX库分配的回调等
(函数(){
var origOpen=XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open=函数(){
log('请求已启动!');
this.addEventListener('load',function()){
log('request completed!');
console.log(this.readyState);//将始终为4(ajax已成功完成)
console.log(this.responseText);//不管响应是什么
});
应用(这个,参数);
};
})();
更多关于addEventListener API的文档,请参见:
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress
(注意这不起作用<;=IE8)