0
DOMContentLoaded
加載文檔並且其腳本運行後觸發,我想在執行腳本之前但在document.body.outerHTML
(document.childNodes[document.childNodes.length-1].outerHTML
)之後運行我的代碼,充滿javascript事件:當文檔被完全加載但腳本尚未運行時得到
我試試這個,但看起來它多次運行還發現之後,現在我做一個定時器執行mycode的前200毫秒的工作,但我想這樣做沒有計時器
var observer = new MutationObserver(function(mutations)
{
if(document.body && document.childNodes[document.childNodes.length-1].outerHTML.lastIndexOf("</html>")!=-1)
{
observer.disconnect();
mycode();
}
});
observer.observe(document, {subtree: true, childList: true});
需要在Chrome中工作(因此beforescriptexecuted事件不會在這裏工作)
所以我應該堅持我的方法(代碼)上面張貼? (cuz DOMContentLoaded可能會在10多個secons中觸發,因爲腳本垃圾和代碼幾乎馬上就會觸發) – Owyn
@Owyn:不,因爲您正在使用的腳本不會執行您所要求的操作。 'html'元素在加載完整文檔之前有一個結束標記,它從開始處獲得結束標記。 (元素是單個對象,不是起始和結束標記的單獨對象,所以當您獲取元素的OuterHTML時,您總會得到結束標記。)之後DOMContentLoaded事件觸發的原因是您當前的代碼觸發方式太早了。這也是它多次觸發的原因,即每次文檔從創建時開始更新。 – Guffa
我看到,所以對於正常情況,我應該使用settimeout而不是ms,而對於firefox + noscript用戶(settimeout不適用於他們)在每個突變上運行(並檢查文檔是否有足夠的內容),但刪除