1、先聊聊什么是document ready handler ?
了解jQuery的開發(fā)者估計(jì)都寫過這樣的代碼:
$(document).ready(function(){
// ......
});
這段代碼就是jQuery中封裝的ready()方法(document ready handler),其實(shí)原生js中沒有ready方法,標(biāo)準(zhǔn)瀏覽器下,jQuery實(shí)際調(diào)用的是DOMContentLoaded事件,老版本的瀏覽器不支持這個(gè)事件,jQuery檢測(cè)到瀏覽器不支持DOMContentLoaded事件,就會(huì)調(diào)用window.onload事件。
2、DOMContentLoaded 和 onload 的區(qū)別:
先說說window.onload事件什么時(shí)候觸發(fā):
onload事件是在頁面DOM樹生成完成后,并且所有的外部資源全部加載完成時(shí)觸發(fā)。這里的外部資源包括圖片、音/視頻等,如果外部資源比較多,用戶等待的時(shí)間就會(huì)很長(zhǎng),用戶體驗(yàn)很差。有沒有什么事件在DOM書渲染完成后就開始執(zhí)行,這樣用戶等待的時(shí)間就會(huì)大大縮減。這就是下面介紹的另一個(gè)事件:DOMContentLoaded
DOMContentLoaded事件正如上面所說,當(dāng)頁面DOM樹渲染完成后就開始執(zhí)行,而不需要等待其它外部資源加載,這樣會(huì)提高用戶體驗(yàn)。這也是推薦大家使用的事件。。。
3、總結(jié):A representation of the steps performed by browsers before the document-ready handler is executed
Page downloaded → HTML parsed → DOM created → Document ready fired → Handler executed