自定义 XMLHttpRequest.prototype.open

custom XMLHttpRequest.prototype.open(自定义 XMLHttpRequest.prototype.open)
本文介绍了自定义 XMLHttpRequest.prototype.open的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

限时送ChatGPT账号..
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 之前收听它们.$.ajax 方法中类似于 jQuery 的 beforeSend 方法.

I am trying to listen for XHR before they are being sent. Something similar to jQuery's beforeSend in the $.ajax method.

我的目标是在发送所有 XHR 之前监听它们.我想最接近的方法是检查上面是否 this.readyState === 1?

My goal is to listen for all XHR's before they are being sent. I suppose the closest thing would be to check above if this.readyState === 1?

上面的代码是否会因为我在 XMLHttpRequest 上使用原型而导致任何 ajax 库(如 jQuery)出现故障?

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

推荐答案

我正在尝试在发送 XHR 之前监听它们.

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

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

Then try to spoof the send() method, not the open() one.

上面的代码是否会因为我在 XMLHttpRequest 上使用原型而导致任何 ajax 库(如 jQuery)出现故障?

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

不,不是真的.只是,

  • 在那些库选择不使用 XMLHttpRequest(尤其是 IE)的情况下它不起作用
  • …如果浏览器不支持 XMLHttpRequest 对象(或不支持访问或修改其原型),甚至会失败
  • libs 可能能够通过在你可以之前取消引用函数来解决你的欺骗问题(尽管我不知道有什么常见的 lib)
  • 您的代码使用固定数量的参数调用本机方法,不确定这是否会影响任何内容,并且它不会重新返回结果(即使我们知道它是 undefined).为 100% 确定,请使用 return open.apply(this, arguments);.
  • it won't work where those libs choose not to use XMLHttpRequest (particularly IE)
  • …and even fail if the browser does not support the XMLHttpRequest object (or does not support accessing or modifying its prototype)
  • libs might be able to work around your spoof by dereferencing the functions before you can (though I don't know any common lib that does)
  • Your code calls the native method with a fixed number of arguments, not sure if that affects anything, and it does not re-return the result (even if we know it's undefined). To be 100% sure, use return open.apply(this, arguments);.

这篇关于自定义 XMLHttpRequest.prototype.open的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

SCRIPT5: Access is denied in IE9 on xmlhttprequest(SCRIPT5:在 IE9 中对 xmlhttprequest 的访问被拒绝)
XMLHttpRequest module not defined/found(XMLHttpRequest 模块未定义/未找到)
Show a progress bar for downloading files using XHR2/AJAX(显示使用 XHR2/AJAX 下载文件的进度条)
How can I open a JSON file in JavaScript without jQuery?(如何在没有 jQuery 的情况下在 JavaScript 中打开 JSON 文件?)
How do I get the HTTP status code with jQuery?(如何使用 jQuery 获取 HTTP 状态码?)
quot;Origin null is not allowed by Access-Control-Allow-Originquot; in Chrome. Why?(“Access-Control-Allow-Origin 不允许 Origin null在铬.为什么?)