如何檢查頁面是否有掛起的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