JavaScript如何和HTML建立聯(lián)系
通過<script></script>標(biāo)簽,在HTML有兩種使用方式:
- 行內(nèi)代碼(非最佳實(shí)踐):
<script type="text/javascript">
function (){
....
}
</script>
- 外部文件(最佳實(shí)踐):
理論上把不推遲執(zhí)行的腳本放置在主體內(nèi)容之后</body>之前灵莲。因?yàn)闉g覽器必須解釋完位于<script>元素中的代碼丑孩,然后才能繼續(xù)渲染頁面的剩余部分跺撼。
推薦理由:可維護(hù)性主籍、緩存、適應(yīng)未來乳愉。
<script src="xxx.js"></script>
script標(biāo)簽中的屬性介紹:
- async:表示應(yīng)該立即開始下載腳本兄淫,但不能阻止其他頁面動作,比如下載資源或等待其他腳本加載蔓姚。
- charset:指定的代碼字符集
- crossorigin:配置相關(guān)請求的CORS(跨源資源共享)設(shè)置
- defer:表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行捕虽。
- integrity:允許比對接收到的資源和指定的加密簽名以驗(yàn)證子資源完整性(SRI,Subresource Integrity)
- src:表示包含要執(zhí)行的代碼的外部文件
- type:代碼塊中腳本語言的內(nèi)容類型(現(xiàn)代瀏覽器默認(rèn)支持js腳本)
<script type="MIME_type"></script>
/*MIME_type:
text/javascript
text/ecmascript
application/ecmascript
application/javascript
text/vbscript
*/
defer和async區(qū)別
defer:推遲執(zhí)行腳本
async:異步執(zhí)行腳本
區(qū)別:defer等到HTML解析到結(jié)束后執(zhí)行腳本坡脐,原則上按照列出的順序執(zhí)行泄私,async下載完之后就執(zhí)行,不能保證按列出的次序執(zhí)行腳本
關(guān)于noscript元素的使用場景
- noscript標(biāo)簽可以用來判斷瀏覽器是否支持JavaScript,雖然說現(xiàn)在的瀏覽器已經(jīng)100%支持JavaScript挖滤。
-
雖然有注釋標(biāo)簽 ,但是我們也可以把需要注釋的HTML結(jié)構(gòu)用<noscript></noscript>包裹浅役,達(dá)到注釋的效果(雖然說有劍走偏鋒)斩松。