如何检查页面是否有待处理的AJAX或HTTP GET / POST请求?我使用javascript和/或python进行此检查。
我想要做的是在页面完成所有请求时执行脚本。 onload对我不起作用,如果你使用了firebugs网盘,你会知道的。加载页面时会触发onload,但有可能还有待处理的请求挂在某处。
提前谢谢。
答案 0 :(得分:10)
想通了。谢谢你的努力。 只是简单明了的javascript。
interValRef = 0;
interValRef = setInterval("checkState();",100)
function checkState(){
if(document.readyState == 'complete'){
clearInterval(interValRef);
myFunc();
}
}
答案 1 :(得分:3)
我看到你提到你正在使用Prototype.js。您可以通过检查Ajax.activeRequestCount
值来跟踪Prototype的活动请求。您可以使用setTimeout或setInterval来检查这一点,以确保在页面加载时触发的任何请求都已完成(如果这是您要查看的内容)
答案 2 :(得分:1)
我想您想知道HTML是否已完全加载。在这种情况下,您可以使用dom:loaded事件。这是一个关于如何将它与原型一起使用的示例(但必须有其他JS框架的变体):
document.observe("dom:loaded", function() {
// do whatever you want to do
});
加载DOM树后,此事件将立即触发。所以即使在加载所有图像或外部数据(包括iframe)之前。
答案 3 :(得分:1)
这是检查它的最佳方式。
module com.dua3.utility {
exports com.dua3.utility;
exports com.dua3.utility.io;
exports com.dua3.utility.jfx;
exports com.dua3.utility.swing;
exports com.dua3.utility.lang;
exports com.dua3.utility.math;
exports com.dua3.utility.text;
requires javafx.controls;
requires javafx.web;
requires java.xml;
requires java.desktop;
requires org.apache.logging.log4j;
}
因此,如果完成Ajax调用,loadingDone将为true。如果它是假的,那么你可以添加等待。
答案 4 :(得分:0)
您需要跟踪每个XMLHttpRequest并监视它是否完成或异步回调是否已执行。
答案 5 :(得分:0)
假设您正在使用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");
答案 6 :(得分:0)
@Component({
selector: 'ax-mat-time-picker',
exportAs: 'axMatTimePicker',
templateUrl: './time-picker.component.html',
styleUrls: ['./time-picker.component.scss'],
encapsulation: ViewEncapsulation.None,
preserveWhitespaces: false,
providers: [
{ provide: MatFormFieldControl, useExisting: AxMatTimePicker },
DecimalPipe
],
host: {
'class': 'ax-mat-time-picker',
'[class.floating]': 'shouldLabelFloat',
'[id]': 'id',
'[attr.aria-describedby]': 'describedBy'
}
})
export class AxMatTimePicker implements MatFormFieldControl<Time>, OnDestroy {...}
答案 7 :(得分:0)
我可以确认,即使网络选项卡中有待处理的请求,document.readyState 仍然可以“完成”。
我现在开发的用于检查页面是否已完全加载的代码是:
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 长度。 不是最好的解决方案,但至少它有效。