javascript - 如何检查 HTTP 请求是否在浏览器中打开?

标签 javascript ajax xmlhttprequest

是否有一种简单的方法来检测 XMLHttpRequest 是否在浏览器窗口中处于事件状态?或者有多少是活跃的? IE。有没有办法检测我的浏览器窗口中是否有任何 AJAX 调用处于事件状态?

问题的扩展: 使用 javascript 是否可以查看是否有任何 XMLHttpRequests 是打开的?例如 "window.XMLisActive()" 或类似的东西?

解决方案:最终为 XMLHttpRequest 编写了一个包装器:gist here

最佳答案

除非您为 XmlHttpRequest 编写一个包装器(或猴子修补它)以跟踪打开的连接,否则无法从 JS 检测打开的连接。

这是 kidcapital 的猴子补丁,不确定它是否完美,但这是一个好的开始

  (function() {
    var oldOpen = XMLHttpRequest.prototype.open;
    window.openHTTPs = 0;
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
      window.openHTTPs++;
      this.addEventListener("readystatechange", function() {
          if(this.readyState == 4) {
            window.openHTTPs--;
          }
        }, false);
      oldOpen.call(this, method, url, async, user, pass);
    }
  })();

注意

这不会处理 fetch 或 websockets,但在这些情况下您可以做类似的事情。

关于javascript - 如何检查 HTTP 请求是否在浏览器中打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9267451/

相关文章:

javascript - 十进制值加法不起作用,返回字符串

javascript - 召唤依赖注入(inject)并调用模块内的方法/函数

javascript - 当同一个ajax调用失败时如何重新初始化ajax调用?

对象变量中的 Javascript HTTP 请求队列 - 初始化不起作用

java - 通过深入研究 js 源代码来解决 HTML 的问题

javascript - 使用 Ajax/JavaScript 的网络爬虫

jquery - 使用 Javascript/Jquery 和 Json 数据填充选择框选项

amazon-web-services - 使用预先签名的 URL React Native 上传到 S3

dart - 在 flutter web 中发生 XMLHttpRequest 错误时启用 CORS

javascript - 如何加载 JS 异步文件 - 或将单击事件传递到匿名函数中?