2.1<script>元素
6個屬性(有廢棄的不寫了):
? ? ? ? async:可選。表示應該立即下載腳本,但不妨礙頁面中的其他操作。僅對外部腳本文件有效;
? ? ? ? charest:src指定字符集編碼,很少有人用了;
? ? ? ? defer: 可選。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行,僅對外部腳本文件有效;
? ? ? ? type:text/javascript
使用方式:兩種:直接在頁面中嵌入;外部包含。
? ? ? ? 直接在頁面中嵌入:js代碼從上至下被依次解釋。再解釋器對<script>元素內(nèi)部的所有代碼求值完畢以前,頁面中的其余內(nèi)ring都不會被瀏覽器加載或顯示。注意不要載任何地方出現(xiàn)</script>,一定要用,則使用<\/script>.
? ? ? ? 外部包含:注意在HTML中,使用</script>結(jié)尾,不可使用</>結(jié)尾。同是不可在中間包含js代碼,不會執(zhí)行嵌入代碼。
解析順序:如果不包含async與defer,就按順序執(zhí)行<script>文件。
2.1.1 標簽的位置
傳統(tǒng)放在<head>中,目的把所有外部文件的引用都放在相同的位置。但這樣的話,必須等到全部的js代碼都被下載解析和執(zhí)行完成以后,才開始呈現(xiàn)頁面的內(nèi)容(瀏覽器在遇到<body>標簽時才開始呈現(xiàn)內(nèi)容),這樣會導致瀏覽器在呈現(xiàn)頁面時出現(xiàn)明顯的延遲。所以一般都把全部的js引用放在<body>元素中頁面內(nèi)容的后面。
2.1.2 延遲腳本
defer屬性:表明腳本在執(zhí)行時不會影響頁面的構(gòu)造,即腳本會被延遲到整個頁面解析完后再運行。瀏覽器立即下載,但延遲執(zhí)行。按照先后順序執(zhí)行。
使用<script defer="defer">
2.1.3異步腳本
與defer不同,不保證先后順序。指定的目的是不讓頁面等待腳本下載和執(zhí)行,從而異步加載其他內(nèi)容。
使用:<scriot async>
2.2嵌入代碼與外部文件
最好使用外部文件,優(yōu)點:可維護性,可緩存:可加快界面加載速度,適應未來。
2.3文檔模式
主要影響CSS內(nèi)容的呈現(xiàn)。
混雜模式(quirks mode):會讓IE的行為與IE5相同。
標準模式(standard mode):讓IE的行為更接近標準行為。<!DOCTYPE html>
2.4<noscript>元素
瀏覽器不支持腳本;瀏覽器支持腳本,但腳本被禁用時,會顯示該元素中的內(nèi)容。