Use DOMContentLoaded ?

onload 越來越少人在用,而改用像是 DOMContentLoaded 這種事件來代替,像是 jQuery 也有個 ready event 可以用,主要是因為 onload 事件還要等待網頁中所有的元素都讀取完畢(或是 timeout),這些元素包括圖片,其他網站的 style, script,flash 物件等,常常訪客開始看網頁內容時,需要執行的 script 卻還沒開始執行,不過並不是所有瀏覽器都有支援 DOMContentLoaded 或是提供其他替代方案,所以各家 js library 為了處理這問題就無所不用其極限。

我是傾向用另外一個方法處理這問題,不過需要一些對網頁內元件的控制能力,其實也很簡單,就是把 script 放在頁面尾端,然後馬上跑,這方法除了可以解決上述問題外,還有另外兩個好處,一是所有瀏覽器都支援,二是可以讓網頁內容先讀進來才跑 script,這也是 YSlow 的建議項目之一,當然如果你就是想那讓那些瀏覽器的使用者看起來感覺不好,就當我沒說吧XD。