如何检查页面是否有挂起的AJAX或HTTP GET/POST请求?我使用JavaScript和/或python进行此检查。检查挂起的AJAX请求或HTTP GET/POST请求
我想要做的是在页面完成所有请求时执行脚本。 onload不适用于我,如果你使用萤火虫网络面板,你会知道。 onload在页面加载时触发,但可能有挂起的请求挂在某个地方。
预先感谢您。
如何检查页面是否有挂起的AJAX或HTTP GET/POST请求?我使用JavaScript和/或python进行此检查。检查挂起的AJAX请求或HTTP GET/POST请求
我想要做的是在页面完成所有请求时执行脚本。 onload不适用于我,如果你使用萤火虫网络面板,你会知道。 onload在页面加载时触发,但可能有挂起的请求挂在某个地方。
预先感谢您。
想通了。感谢努力的人。 只是简单而简单的JavaScript。
interValRef = 0;
interValRef = setInterval("checkState();",100)
function checkState(){
if(document.readyState == 'complete'){
clearInterval(interValRef);
myFunc();
}
}
您需要跟踪每个XMLHttpRequest并监视它是否完成或执行异步回调。
关于HTML GET/POST请求的任何建议?如果IFRAME在页面中,就会发生这种情况。 – klambiguit 2010-07-16 07:22:32
假设你正在使用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");
我正在使用prototype.js ..我会检查出来..谢谢.. :) – klambiguit 2010-07-16 07:12:27
我想你想知道HTML是否完全加载。在这种情况下,您可以使用dom:loaded事件。下面是关于如何使用原型使用(但必须有其它JS框架的一个变体)的例子:
document.observe("dom:loaded", function() {
// do whatever you want to do
});
此事件会尽快DOM树加载火。所以即使在加载所有图像或外部数据(包括iframe)之前。
我看到你提到你正在使用Prototype.js。您可以通过检查Ajax.activeRequestCount
值来跟踪使用Prototype的活动请求。您可以使用setTimeout或setInterval来检查这一点,以确保页面加载时触发的任何请求都已完成(如果这就是您要做的)
这一个也不错,但只检查AJAX请求。 http get/post请求怎么样? (发生瓦特/ iframe) – klambiguit 2010-07-19 02:28:09
以下是检查它的最佳方法。
var loadingDone = document.readyState=="complete" && jQuery.active === 0;
因此,如果完成Ajax调用,loadingDone将为true。如果它的错误,那么你可以添加等待。
document.addEventListener("readystatechange", function(event) {
if (document.readyState === "complete") {
console.log("complete");
}
});
所有我想要的基本上检查,如果页面已完全加载。没有待处理的http get/post ajax请求。上面的代码做了诀窍。 – klambiguit 2010-07-16 09:31:45
我很确定在readyState变成“完成”之后仍然可以挂起HTTP请求。 load事件与readyState相对应,它只是表示初始请求已经加载了它的所有依赖关系(而不是没有更多未决请求)。您可以在yahoo.com等网页的Chrome网络标签中看到此内容。红线是'负载'事件,但在此之后经常会有事情发生。 – user2859458 2016-05-25 18:38:12