var open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, uri, async, user, pass) {
this.addEventListener("readystatechange", function(event) {
if(this.readyState == 4){
var self = this;
var response = {
method: method,
uri: uri,
responseText: self.responseText
};
console.log(response);
} else {
console.log(this.readyState);
}
}, false);
open.call(this, method, uri, async, user, pass);
};
我尝试在XHR被发送之前监听它们,类似于jQuery的$.ajax
方法中的beforeSend。
我的目标是在发送之前监听所有的XHR。我想最接近的事情是检查上面是否有this.readyState === 1
?
上面的代码是否会因为我在XMLHttpRequest
上使用prototype而导致jQuery之类的 AJAX 库出现故障?
2条答案
按热度按时间46qrfjad1#
我试着在他们被发送之前听XHR。
然后尝试欺骗
send()
方法,而不是open()
方法。上面的代码是否会因为我在XMLHttpRequest上使用prototype而导致jQuery之类的 AJAX 库出现故障?
不,不是的。只是,
XMLHttpRequest
(特别是IE),则它将不起作用XMLHttpRequest
对象(或不支持访问或修改其原型),甚至会失败undefined
)。krcsximq2#
您需要将此脚本作为DOM元素插入,但下面的代码适用于90%的网络请求:
响应拦截器.js
使用通用contentScript.js将response_interceptor. js添加为DOM元素:
内容脚本.js
在清单中,不要忘记添加要在documentStart注入的contentScript.js:
清单.js