所以在我的网站上有一个 Javascript 函数,它将通过 XMLHttpRequest 从服务器加载一个新网站。之后,它将当前页面替换为新页面:
var post = new XMLHttpRequest();
post.open('POST', data);
post.onload = function() {
var do = document.open("text/html", "replace");
do.write(post.responseText);
do.close();
goOn();
}
function goOn() {
console.log($('img:visible'));
}
有些人可能会假设在 do.close() 之后文档已更改并准备就绪。但事实并非如此,例如,如果我加载非常多/大数据/responseText 函数 goOn() 只会记录一个空结果。显然 goOn() 在 DOM 准备好被读取之前被调用!不幸的是,在 write() 完成后没有触发“就绪”事件......我怎么能确定它已经完成?
/EDIT: goOn() 将此记录到 Chrome 控制台:
[prevObject: p.fn.p.init[1], context: #document, selector: "img:visible"]
context: #document
length: 0
prevObject: p.fn.p.init[1]
selector: "img:visible"
__proto__: Object[0]
但是,如果我在手动输入 $('img:visible') 到控制台之后,它会向我显示所有图像......