定義load事件監聽的兩種方法:
一是通過addEventListener,把load事件綁定到window上。
window.addEventListener('load', function() { console.log('window onload'); });
二是直接在body上添加onload屬性。
<body onload="console.log('onload')"> </body>
Tips
根據DOM Level2 Events文檔的描述,load事件應該在document而非window上被觸發。然而由於所有的瀏覽器都已經實現了在window上觸發load事件,為了向后兼容性的考慮,在瀏覽器中load事件的觸發和spec上描述不一致。
兩種定義load事件監聽方式的執行順序
如果在頁面中同時添加這兩種方式,誰會先被觸發呢?觸發點取決於何時加載注冊load事件的腳本。按照HTML頁面的加載順序,如果把腳本放到head里加載,那么在window上注冊的load事件會先觸發,如果把腳本放到body里加載,那body上的onload事件會被先觸發。
一般來說,任何在window上注冊的事件,都可以通過在body上定義相應的事件屬性來觸發,這是因為在HTML里無法訪問window元素。推薦的做法是盡可能的使用Javascript的方式注冊事件。