gpt4 book ai didi

javascript - 自定义 XMLHttpRequest.prototype.open

转载 作者:行者123 更新时间:2023-11-29 14:57:15 27 4
gpt4 key购买 nike

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 ?

上面的代码会因为我在 XMLHttpRequest 上使用原型(prototype)而导致任何 ajax 库(如 jQuery)发生故障吗? ?

最佳答案

I am trying to listen for XHR before they are being sent.



然后尝试欺骗 send()方法,而不是 open()一。

Would the code above cause any ajax libraries like jQuery to malfunction because I use prototype on XMLHttpRequest?



不,不是真的。仅有的,
  • 在那些库选择不使用 XMLHttpRequest 的地方它将不起作用(尤其是 IE)
  • …如果浏览器不支持 XMLHttpRequest 甚至会失败对象(或不支持访问或修改其原型(prototype))
  • libs 可能能够通过在您可以之前取消引用函数来解决您的欺骗问题(尽管我不知道任何常见的 lib)
  • 您的代码使用固定数量的参数调用 native 方法,不确定这是否会影响任何内容,并且它不会重新返回结果(即使我们知道它是 undefined )。要 100% 确定,请使用 return open.apply(this, arguments); .
  • 关于javascript - 自定义 XMLHttpRequest.prototype.open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15768369/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com