Javascript 检查挂起的AJAX请求或HTTP GET/POST请求
如何检查页面是否有挂起的AJAX或HTTP GET/POST请求?我使用javascript和/或python进行此检查 我想做的是,如果页面已完成所有请求,则执行一个脚本。onload对我不起作用,如果你使用Firebug网络面板,你会知道的。当加载页面时,onload会触发,但有可能仍然有挂起的请求挂在某个地方Javascript 检查挂起的AJAX请求或HTTP GET/POST请求,javascript,python,html,Javascript,Python,Html,如何检查页面是否有挂起的AJAX或HTTP GET/POST请求?我使用javascript和/或python进行此检查 我想做的是,如果页面已完成所有请求,则执行一个脚本。onload对我不起作用,如果你使用Firebug网络面板,你会知道的。当加载页面时,onload会触发,但有可能仍然有挂起的请求挂在某个地方 提前感谢。您需要跟踪每个XMLHttpRequest,并监视它是否完成或异步回调是否执行。假设您使用的是prototype.js,您可以跟踪所有请求对象的计数器 var ACTIVE
提前感谢。您需要跟踪每个XMLHttpRequest,并监视它是否完成或异步回调是否执行。假设您使用的是prototype.js,您可以跟踪所有请求对象的计数器
var ACTIVE_REQUESTS = 0; // GLOBAL
ACTIVE_REQUESTS++
new Ajax.Request('/your/url', {
onSuccess: function(response) {
ACTIVE_REQUESTS--;
// Handle the response content...
}
}));
console.log("there are " + ACTIVE_REQUESTS + " open AJAX requests pending");
我明白了。谢谢大家的努力。 只是简单明了的javascript
interValRef = 0;
interValRef = setInterval("checkState();",100)
function checkState(){
if(document.readyState == 'complete'){
clearInterval(interValRef);
myFunc();
}
}
我想您想知道HTML是否已完全加载。在这种情况下,您可以使用事件。下面是一个关于如何将其与prototype一起使用的示例(但其他JS框架必须有一个变体):
此事件将在加载DOM树后立即触发。因此,即使在加载所有图像或外部数据(包括iframe)之前。我看到您提到您正在使用Prototype.js。通过检查
Ajax.activeRequestCount
值,可以使用Prototype跟踪活动请求。您可以使用setTimeout或setInterval来检查这一点,以确保页面加载时触发的任何请求都已完成(如果您希望这样做的话)以下是检查它的最佳方法
var loadingDone = document.readyState=="complete" && jQuery.active === 0;
因此,如果Ajax调用完成,loadingDone将为true。如果为false,则可以添加等待。我可以确认document.readyState仍然可以是“完整”的,即使网络选项卡中有挂起的请求
document.addEventListener("readystatechange", function(event) {
if (document.readyState === "complete") {
console.log("complete");
}
});
我现在开发的用于检查页面是否已完全加载的代码是:
var prevSize= document.body.innerHTML.length;
var id= setInterval(()=>{
let currSize=document.body.innerHTML.length;
if(prevSize===currSize){
clearInterval(id);
console.log("page loaded successfully");
}
else{
console.log("loading...");
prevSize=currSize;
}
}, 3000)
这将每隔3秒检查document.body.innerHTML的长度。
这不是一个最佳的解决方案,但至少是有效的。对HTML GET/POST请求有什么建议吗?如果一个IFRAME在一个页面中,就会发生这种情况。我只想基本上检查页面是否已完全加载。没有挂起的http get/post ajax请求。上面的代码做到了这一点。我非常确定,在readyState变为“完成”之后,仍然会有挂起的HTTP请求。
load
事件与该readyState相对应,它仅仅意味着初始请求已加载了其所有依赖项(与不再有未决请求相反)。你可以在类似yahoo.com的网页上的Chrome的网络标签中看到这一点。红线是load
事件,但之后通常会有挂起的事情。这条线也很好,但只检查AJAX请求。http get/post请求怎么样?(与iframe一起发生)是的,它是正确的。我也在做硒测试
var prevSize= document.body.innerHTML.length;
var id= setInterval(()=>{
let currSize=document.body.innerHTML.length;
if(prevSize===currSize){
clearInterval(id);
console.log("page loaded successfully");
}
else{
console.log("loading...");
prevSize=currSize;
}
}, 3000)