DOMContentLoaded

DOM文檔加載流程:
(1) 解析HTML結(jié)構(gòu)。
(2) 加載外部腳本和樣式表文件。
(3) 解析并執(zhí)行腳本代碼。
(4) 構(gòu)造HTML DOM模型。// DOMContentLoaded 相當(dāng)于jQuery中的ready
(5) 加載圖片等外部文件。
(6) 頁面加載完畢。// load

1、DOMContentLoaded

MDN解析:當(dāng)初始HTML文檔已完全加載和解析時(shí),將觸發(fā)DOMContentLoaded事件,而不需要等待樣式表,圖像和子框架頁面加載(事件可以用來檢測(cè)HTML頁面是否完全加載完畢(fully-loaded))。

document.addEventListener("DOMContentLoaded", function(event) {         
    console.log("DOM fully loaded and parsed");         
    console.log(new Date());   
});                                  
for(var i=0; i<10; i++) {         
console.log(new Date());     
}

此過程中會(huì)先執(zhí)行for循環(huán)在執(zhí)行DOMContentLoaded事件。

2、document.readyState

MDN解析:當(dāng)document文檔正在加載時(shí),返回"loading"。當(dāng)文檔結(jié)束渲染但在加載內(nèi)嵌資源時(shí),返回"interactive",并引發(fā)DOMContentLoaded事件。當(dāng)文檔加載完成時(shí),返回"complete",并引發(fā)load事件。

var eventHandler = function (event) {     
    console.log(event.type);   
    console.log(event.timeStamp);    
    console.log(document.readyState);    
    console.log('\n');
}
console.log(document.readyState);
document.addEventListener('readystatechange', eventHandler,false);
document.addEventListener('DOMContentLoaded', eventHandler, false);
window.addEventListener('load', eventHandler, false);

console輸出如圖所示:


timeStamp返回一個(gè)毫秒時(shí)間戳,表示事件發(fā)生的時(shí)間。如果想將這個(gè)值轉(zhuǎn)為Unix紀(jì)元時(shí)間戳,就要計(jì)算event.timeStamp + performance.timing.navigationStart。

3、jquery寫法

// DOMContentLoaded
$(document).ready(function() { // code... });
// load
$(document).load(function() { // code... });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容