0
所以SDK有這個函數檢查窗口是否加載,代碼如下。檢查window dom是否被解析
我的問題是如果一個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;
,但確實的readyState進入互動被解析innerHTML的時候?我想知道什麼時候頁面完全呈現。
啊,你認爲dom分析器需要多少時間才能渲染像appendChild和innerHTML更新這樣的東西?沒有繪製完整的事件? – Noitidart
@Noitidart:渲染髮生異步,只有DOM變化是同步的。 'innerHTML'可能需要一段時間,這取決於HTML代碼的複雜程度。另一方面'appendChild'非常快 - 這裏不涉及解析。有['MozAfterPaint'事件](https://developer.mozilla.org/en-US/docs/Web/Reference/Events/MozAfterPaint),但你不知道哪一個是「最終」的繪畫事件。 –
Ahhh非常感謝那個MozAfterPaint,我知道我記得那樣的東西,但找不到它。好的,謝謝Wlad! – Noitidart