是否有一种简单的方法来检测 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/