因此SDK具有此功能,可检查窗口是否正在加载,其代码如下所示。
我的问题是如果innerHTML或appendChild或其他东西改变html会发生什么?这会带回loadContext吗?我想知道窗口中的DOM是完全解析还是在解析过程中,这种方法是否可以实现?
编辑:实际上这是用于查看文档是否已加载的代码:
const isInteractive = window =>
window.document.readyState === "interactive" ||
isDocumentLoaded(window) ||
// XUL documents stays '"uninitialized"' until it's `readyState` becomes
// `"complete"`.
isXULDocumentWindow(window) && window.document.readyState === "interactive";
exports.isInteractive = isInteractive;
const isXULDocumentWindow = ({document}) =>
document.documentElement &&
document.documentElement.namespaceURI === XUL_NS;
/**
* Check if the given window is completely loaded.
* i.e. if its "load" event has already been fired and all possible DOM content
* is done loading (the whole DOM document, images content, ...)
* @params {nsIDOMWindow} window
*/
function isDocumentLoaded(window) {
return window.document.readyState == "complete";
}
exports.isDocumentLoaded = isDocumentLoaded;
但是当解析innerHTML时,readyState是否会转到交互式?我想知道什么时候页面完全呈现。
答案 0 :(得分:1)
动态HTML更改不会影响document.readyState
property,它是一条单行道。解析文档时的值为"loading"
,解析完成后"interactive"
只需加载图像(DOMContentLoaded
事件已触发)和"complete"
一切都是完成(load
事件被触发)。之后它不再发生变化。