有一次面試被問到$.ready()的作用吨掌,答:當(dāng)DOM加載完畢時觸發(fā)半抱。
接著問$.ready()與window.onload的區(qū)別是什么?答:不知道...
再問$.ready()的實現(xiàn)原理是什么膜宋?答:不知道...
所以寫篇博客壓壓驚
$.ready()與window.onload的區(qū)別
- 加載時間不同
- window.onload要等到所有東西都加載完畢才開始執(zhí)行
- $.ready()是等到DOM構(gòu)建完成就開始執(zhí)行
- 瀏覽器構(gòu)造網(wǎng)頁的過程請看這篇文章的第一部分
- 可以出現(xiàn)的次數(shù)不同
- window.onload在一個網(wǎng)頁中只能出現(xiàn)一次窿侈,多次不會都執(zhí)行
- $.ready()可以在一個網(wǎng)頁中多次出現(xiàn),并順序執(zhí)行
- 另外秋茫,jquery采用的是發(fā)布訂閱模式史简,這篇文章用了入門的例子說明了前端常用的設(shè)計模式
- 不是什么大區(qū)別,$.ready()的簡化寫法可以寫成$()肛著,而window.onload沒有簡化寫法圆兵。
$.ready()的實現(xiàn)原理
具體的可以看這篇文章,代碼寫的很詳細
jquery ready方法實現(xiàn)原理 內(nèi)部原理
$.ajax基于原生的DOMContentLoaded
,mdn中是這樣描述的
當(dāng)初始HTML文檔被完全加載和解析完成之后枢贿,DOMContentLoaded 事件被觸發(fā)殉农,而無需等待樣式表、圖像和子框架完成加載局荚。另一個不同的事件 load
應(yīng)該僅用于檢測一個完全加載的頁面超凳。 在使用 DOMContentLoaded 更加合適的情況下使用 load
是一個非常流行的錯誤愈污,所以要謹慎。