How to check if HTTP requests are open in browser?(如何检查 HTTP 请求是否在浏览器中打开?)
问题描述
有没有一种简单的方法可以检测 XMLHttpRequest
在浏览器窗口中是否处于活动状态?或者有多少是活跃的?IE.有没有办法检测我的浏览器窗口中是否有任何 AJAX 调用处于活动状态?
Is there an easy way to detect if an XMLHttpRequest
is active in the browser window? Or how many are active? ie. Is there a way to detect if there are any AJAX calls active in my browser window?
问题扩展: 使用 javascript 有没有办法可以查看是否打开了任何 XMLHttpRequests?比如window.XMLisActive()"
之类的?
Extension of question: Using javascript is there a way I can see if any XMLHttpRequests are open? Such as "window.XMLisActive()"
or something like that?
解决方案:最终为 XMLHttpRequest
编写了一个包装器:gist here
Solution: Ended up writing a wrapper for XMLHttpRequest
: gist here
推荐答案
除非您为 XmlHttpRequest
编写一个包装器(或对其进行猴子补丁),否则无法检测来自 JS 的打开连接跟踪打开的连接.
There is not a way to detect an open connection from JS unless you write a wrapper for XmlHttpRequest
(or monkey patch it) that keeps track of opened connections.
这里是kidcapital的猴子补丁,不确定是否完美,但这是一个好的开始
Here's kidcapital's monkey patch, not sure if it's perfect, but it's a good start
(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,但你可以在这些情况下做类似的事情.
This does not handle fetch
or websockets but you could do something similar in those cases.
这篇关于如何检查 HTTP 请求是否在浏览器中打开?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何检查 HTTP 请求是否在浏览器中打开?
基础教程推荐
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- 直接将值设置为滑块 2022-01-01