入職新公司,看代碼的時候注意到有的script標簽中有一個defer屬性,查了一下。在這里分享出來。
需要注意的有三點,其中前兩點是在錯誤中分辨出來的:
錯誤來源:http://www.w3school.com.cn/tags/att_script_defer.asp
1,defer屬性只有IE支持;應該說是在主流瀏覽器都是支持的;
http://www.runoob.com/tags/att-script-defer.html 中說了,在所有主流瀏覽器都支持defer屬性;在Chrome,FF上親測可用。
2,defer必須用在引入js文件的script標簽中;內嵌在html頁面中的script標簽是不起作用的。
如下圖所示,這樣的用法是錯誤的, 直接報錯誤: Uncaught TypeError: Cannot read property 'firstChild' of null
3,需要明白defer屬性的真正含義,我參考的是http://www.cnblogs.com/neusc/archive/2016/08/12/5764162.html
精髓的話,就是js文件與dom結構一起加載,但是js文件會等html渲染完之后再執行。
最后再說一下,之所以用defer屬性,是要把js文件在頁頭那里就引入,但是你要是放在了頁尾,那就不用再使用這個屬性。否則就是畫蛇添足了。
PS:w3school是不是已經停更了啊?以后還是去菜鳥教程看吧。。。