參考:DOMContentLoaded與load的區(qū)別
一朵诫、DOMContentLoaded的含義
? ? 1. DOMContentLoaded字面上理解是:dom內(nèi)容加載完畢技矮,實際上是:HTML文檔被加載和解析完成(此時會觸發(fā)DOMContentLoaded事件)抚笔。
????2. 怎么理解“HTML文檔被加載和解析完成”
? ? ? ? 直觀感受是:打開一個網(wǎng)頁相寇,首先展示的是空白頁声诸,過一會展示的是頁面內(nèi)容脏款,此時的頁面是可以正常交互围苫,那么此時頁面的HTML文檔是加載和解析完成的
? ? ? ? 原理上是:瀏覽器下載文檔 -> 瀏覽器解析文檔(解析文檔的步驟:1. HTML -> DOM, CSS -> CSSOM; 2. DOM + CSSOM => Render Tree(渲染樹); 3. Layout(根據(jù)渲染樹計算出節(jié)點在頁面中的大小和位置); 4. Paint(將節(jié)點繪制到瀏覽器上)) -> 加載和執(zhí)行javascript會阻塞瀏覽器解析文檔
????3.?DOMContentLoaded事件觸發(fā)的確切時間
????????當文檔中沒有腳本時,瀏覽器解析完文檔便能觸發(fā)DOMContentLoaded?事件撤师;如果文檔中包含腳本剂府,則腳本會阻塞文檔的解析,而腳本需要等位于腳本前面的css加載完才能執(zhí)行剃盾。在任何情況下腺占,DOMContentLoaded?的觸發(fā)不需要等待圖片等其他資源加載完成。
二痒谴、load事件
????????頁面上所有的資源(圖片衰伯,音頻,視頻等)被加載以后才會觸發(fā)load事件闰歪,簡單來說嚎研,頁面的load事件會在DOMContentLoaded被觸發(fā)之后才觸發(fā)