自定义XMLHttpRequest.prototype.open
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的beforeSend$.ajax
。
我的目标是在发送所有XHR之前监听它们。我想最接近的事情是检查上面是否this.readyState === 1
?
上面的代码是否会因为我使用原型而导致诸如jQuery之类的ajax库出现故障XMLHttpRequest
?
回答:
我正在尝试在发送XHR之前先听它们。
然后尝试欺骗该send()
方法,而不是open()
一种。
上面的代码是否会因为我在XMLHttpRequest上使用原型而导致jQuery之类的ajax库出现故障?
不,不是。只要,
- 这些库选择不使用的地方将不起作用
XMLHttpRequest
(尤其是IE) - …甚至在浏览器不支持该
XMLHttpRequest
对象(或不支持访问或修改其原型)时失败 - 库可能可以通过在使用之前取消引用功能来解决您的欺骗(尽管我不知道有没有这样做的常见库)
- 您的代码使用固定数量的参数调用本机方法,不确定是否会影响任何参数,并且不会返回结果(即使我们知道是
undefined
)。要100%确定,请使用return open.apply(this, arguments);
。
以上是 自定义XMLHttpRequest.prototype.open 的全部内容, 来源链接: utcz.com/qa/431992.html