2. <script>元素的六個屬性
- async:表示應該立即下載腳本,但是不影響其他腳本的下載伍伤。只對外部腳本有效蜕猫。
- defer:表示腳本可以延遲到文檔完全解析和顯示之后再執(zhí)行。只對外部腳本有效盟榴。
- charset:表示通過src屬性指定代碼的字符集抹锄。少用。
- type:可以看成language的替代屬性。默認值為"text/javascript"偎球。
- src:文件地址。
- language:已廢棄辑甜。
2.1 使用誤區(qū)
2.1.1 script代碼內不可以出現(xiàn)"</script>"字符串
解決方法:使用轉義符號"\"
例:alert("<\/script>");
2.1.2 不能省略結束標簽
不管是引入外部js文件還是寫js代碼衰絮,不能省略"</script>"結束標簽。
2.1.3 引入外部js文件的標簽內不能嵌入js代碼
在引入外部js文件的標簽內不能嵌入js代碼磷醋,嵌入代碼無效猫牡。
2.2 延遲腳本defer
???? 腳本會被延遲到整個頁面都解析完畢后再運行,相當于告訴瀏覽器立即下載邓线,但延遲執(zhí)行淌友。
???? HTML5 規(guī)范要求腳本按照它們出現(xiàn)的先后順序執(zhí)行,因此第一個延遲腳本會先于第二個延遲腳本執(zhí)行骇陈,而這兩個腳本會先于 DOMContentLoaded 事件執(zhí)行震庭。在現(xiàn)實當中,延遲腳本并不一定會按照順序執(zhí)行你雌,也不一定會在 DOMContentLoaded 事件觸發(fā)前執(zhí)行器联,因此最好只包含一個延遲腳本。
2.3 異步腳本async
???? 告訴瀏覽器立即下載文件,標記為"asnyc"不一定會按照先后順序執(zhí)行主籍。建議異步腳本不要在加載期間修改DOM习贫。
2.4 標簽的位置
???? 放在"<head>"和"<body>"中。現(xiàn)代Web應用程序一般都把JavaScript引用放在"<body>"元素中頁面內容的后面千元。
2.5 文檔模式
???? 混雜模式和標準模式苫昌。一般用標準模式。
2.6 <noscript>元素
???? 顯示條件:
- 瀏覽器不支持腳本
- 瀏覽器支持腳本幸海,但腳本被禁用
例:
<noscript>
<p>本頁面需要瀏覽器支持(啟用)JavaScript祟身。</p>
</noscript>
2.7小結
- 引入外部文件時,src屬性設置相應的URL物独,既可以是同一服務器上的文件也可以是不同域的文件袜硫。
- 在不使用defer和async屬性的條件下,"<script>"元素會按照出現(xiàn)的先后順序進行解析挡篓。
- 由于瀏覽器會先解析完不使用 defer 屬性的<script>元素中的代碼婉陷,然后再解析后面的內容,所以一般應該把<script>元素放在頁面最后官研,即主要內容后面秽澳,</body>標簽前面。
- 使用 defer 屬性可以讓腳本在文檔完全呈現(xiàn)之后再執(zhí)行戏羽。延遲腳本總是按照指定它們的順序執(zhí)行担神。
- 使用 async 屬性可以表示當前腳本不必等待其他腳本,也不必阻塞文檔呈現(xiàn)始花。不能保證異步腳本按照它們在頁面中出現(xiàn)的順序執(zhí)行妄讯。
- 使用<noscript>元素可以指定在不支持腳本的瀏覽器中顯示的替代內容。但在啟用了腳本的情況下酷宵,瀏覽器不會顯示<noscript>元素中的任何內容亥贸。
????關鍵字:
???????? script、async忧吟、defer砌函、src、type溜族、charset、language垦沉、text/javascript煌抒、noscript
學習筆記:JavaScript高級程序設計