1. <script>標簽或元素匆瓜,屬性有6個,都是可選的:src,async(立即下載腳本驮吱,外部文件有效)茧妒,defer(立即下載腳稍后執(zhí)行,文檔完全被解析和顯示后執(zhí)行左冬,外部文件有效)桐筏,charset(很多瀏覽器會忽略),type(默認text/javascript)拇砰,language(已廢棄)梅忌。
2.script標簽內(nèi)的代碼任何位置不要出現(xiàn)"</script>",若必須除破,則使用轉(zhuǎn)移字符“\”牧氮,如“<\/script>”。
3. 帶有src屬性的script互拾,在<script></script>之間的嵌入代碼被忽略斯嚎,只執(zhí)行外部代碼煤蹭。即使沒有src的屬性值,甚至沒有等號和引號尸诽,如<script src></script>,也會忽略嵌入代碼。
4.(這部分理解不透徹)延遲腳本(含defer屬性)和異步腳本(含async屬性)都是立即下載腳本盯另、異步執(zhí)行腳本逊谋。但是1). 前者是等遇到</html>開始執(zhí)行;2). 后者雖然與頁面渲染異步土铺、但它是下載完就暫停渲染頁面來執(zhí)行腳本胶滋。3). 對于不加defer和async屬性的腳本,立即下載并執(zhí)行悲敷,執(zhí)行完后才加載或執(zhí)行它后面的標簽(與async不同)究恤。
HTML5規(guī)定延遲腳本先于DOMContentLoaded事件執(zhí)行,且各延遲腳本順序執(zhí)行后德,但實際情況并不一定如此部宿。異步腳本一定會在load事件前執(zhí)行,但可能在DOMContentLoaded事件觸發(fā)前或后執(zhí)行瓢湃。
延遲腳本和異步腳本中都不能修改DOM理张,如使用document.write等。
5. 把有些腳本放到<body>中的末尾绵患、而不是<head>中雾叭,目的是使頁面在這些腳本之前就解析和渲染,而不會因加載落蝙、解析和執(zhí)行這些腳本使瀏覽器呈現(xiàn)頁面時出現(xiàn)明顯延遲织狐、頁面空白的情況暂幼。先呈現(xiàn)頁面內(nèi)容會使人感覺頁面加載快,用戶體驗更好移迫。
6. 使用外部腳本文件的優(yōu)點:1). 可維護性提高旺嬉;2). 可緩存文件、3). 重復(fù)使用的腳本只需下載一次厨埋;4). XHTML與HTML對于外部腳本文件的語法是一樣的邪媳,不用特別注意XHTML中的規(guī)則。
7. 文檔模式有三種:標準模式荡陷、準標準模式悲酷、混雜模式。準標準模式與標準模式差異很小亲善,故標準模式有時泛指這兩種设易。若文檔開始出沒有文檔類型聲明,則默認開啟混雜模式蛹头。混雜模式在不同瀏覽器差異非常大顿肺,混雜模式下的不同瀏覽器很難做到頁面一致。
8.<noscript></noscript>在兩種情況下noscript中的內(nèi)容會顯示(其他時候不顯示):1).瀏覽器不支持腳本渣蜗;2).瀏覽器支持腳本屠尊,但腳本被禁用。noscript中可以包含除script的任何能出現(xiàn)在<body>中的元素耕拷。