HTML中如何使用JavaScript
雖然昂秃,JavaScript的使用場景越發(fā)多樣化杜窄,可以在不同的環(huán)境上運(yùn)行肠骆,但大家較為熟悉的還是在HTML的交互塞耕,所以我們稍稍說一下蚀腿,如何在HTML使用JavaScript扫外。
JavaScript是通過<script>元素實(shí)現(xiàn)的,有以下兩種方式
- 在頁面直接嵌入代碼
<script type="text/javascript"> function sayHello(){ console.log('hello'); } </script>
- 引入外部JavaScript文件
<!-- HTML4 and (x)HTML --> <script type="text/javascript" src="javascript.js"></script> <!-- HTML5 --> <script src="javascript.js"></script>
說一下script
元素
The HTML <script> element is used to embed or reference an executable script.
HTML script 元素 是用來嵌入或引用一個(gè)可執(zhí)行腳本
看一下它的常用屬性
- async :HTML5屬性畏浆,該布爾值用來要求瀏覽器在是否允許的情況下異步執(zhí)行腳本狞贱。必須配合src屬性刻获,如果src缺失瞎嬉,該值無效蝎毡;動(dòng)態(tài)插入的腳本默認(rèn)會在它加載完成后異步執(zhí)行氧枣。
- defer:必須配合src屬性,如果src缺失便监,該值無效扎谎;該布爾值被設(shè)定用來告知瀏覽器將在dom解析完成之后烧董,
DOMContentLoaded
事件之前毁靶,執(zhí)行腳本; - src:用來引用外部腳本的URI
- type: 定義src引用的腳本語言逊移,支持的MIME類型包括
text/javascript
,text/ecmascript
,application/javascript
, 和application/ecmascript
。如果沒有定義這個(gè)屬性胳泉,腳本會被視作JavaScript岩遗。
async和defer區(qū)別聯(lián)系
此處參考defer和async的區(qū)別的解答,區(qū)別如下:
-
defer
與async
在網(wǎng)絡(luò)讀取的方式是一樣的凤瘦,都是通過異步讀取的,不會阻塞html的解析廷粒; -
defer
是在整個(gè)頁面都解析完畢之后執(zhí)行的,HTML5要求腳本按照他們出現(xiàn)的方式順序執(zhí)行坝茎,以下defer1.js應(yīng)該先于defer2.js執(zhí)行。(注意:這個(gè)順序只是理論上的嗤放,所以最好不要用這個(gè)當(dāng)做腳本之間的依賴執(zhí)行)<script src = 'defer1.js' defer></script>
<script src = 'defer2.js' defer></script>
-
async
是在腳本異步下載后直接執(zhí)行的,所以沒有順序可言次酌。
文檔模式
IE5.5 提出了文檔模式的概念,使用 doctype
切換實(shí)現(xiàn)岳服;
分類
- 混雜模式:會讓ie的行為與ie5相同
- 標(biāo)準(zhǔn)模式:會讓ie行為更接近標(biāo)準(zhǔn)行為
noscript
在瀏覽器不支持腳本和腳本被禁用時(shí),會顯示noscript標(biāo)簽內(nèi)容