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 和 HTML 数据表提交表的数据

javascript - 如何在没有 AWS JavaScript SDK 的情况下将文件上传到 S3?

javascript - 检查互联网连接的最佳方法是什么

javascript - Ajax异步响应未加载到div中

javascript - 在javascript html5音频预加载上取消了http请求

php - 无法从 Ajax POST 请求将带空格的数据获取到数据库中

php - AJAX 登录 - session 问题

javascript - Mozilla 和 Chrome 中的 XMLHttpRequest 状态 0 错误

javascript - Phonegap xmlhttprequest 不返回 xml 数据

javascript - AngularJs 从工厂调用 Controller 函数