检查窗口dom是否正在解析

时间:2014-03-04 13:23:46

标签: html5 firefox firefox-addon html-parsing readystate

因此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是否会转到交互式?我想知道什么时候页面完全呈现。

1 个答案:

答案 0 :(得分:1)

动态HTML更改不会影响document.readyState property,它是一条单行道。解析文档时的值为"loading",解析完成后"interactive"只需加载图像(DOMContentLoaded事件已触发)和"complete"一切都是完成(load事件被触发)。之后它不再发生变化。