這裡我們直接進入主題:
在JS剛剛開始的時候,必須面臨一個問題,那就是如何使的JS的加載和執行不會影響web核心語言HTML的展示效果,和HTML和諧共存。
在這個背景下<script>標簽出現了,直到現在已經被正式納入HTML規范當中,所以我們今天就開始聊一聊<script>.。
1、<script>標簽其他屬性
asyc:可選,表示立即下載script文件,但不妨礙頁面的其他操作,但是它並不保證浏覽器按照所寫的<script>標簽的順序進行一個個的加載
defer:表示腳本執行時並不影響頁面的構造,也就是在JS腳本下載完成到JS腳本被解析器解析完成這段時間,被放到了整個頁面都解析完畢
以後來執行解析JS的操作,並且解析的時候是按照所寫的<script>標簽的順序進行一個個的加載。但是這些在HTML5會忽略給嵌入JS腳本的defer
屬性,所以還是建議按照Yahoo!前端手冊中規定的,把JS腳本放到文檔的最後,也就是</body>之前
type:使用的腳本語言的內容的類型(MIME類型),不寫的時候默認是test/javascript,
src:包含要執行代碼的外部文件,這個屬性的值是可以跨域來進行加載解析文件,和<img>的src一樣,如下
<script src="http://www.somewhere.com/init.js"></script>
2、XHTML中的應用
xhtml:可擴展的超文本標記語言,要想使用XHTML模式,必須把頁面的MIME類型指定為"application/xhtml+xml",
在html中如果<script>標簽中又包含了一個</script>字符串,那麼html就會認為JS腳本已經結束所以會產生一個錯誤用一下代碼來替換:
<script type="text/javascript">
alert("<\/script>");
</script>來替換alert("</script>");
而在xhtml中的script標簽都是自閉標簽,寫成上面的格式則被忽略。所以在XHTML中<是有特殊的含義,在XHTML中表示小於就要用到:< 來替換
3、CData片段:
CData片段是文檔中的一個特殊的區域,他中的代碼不會被浏覽器進行解析,寫法:
<script type="text/javascript"><! [CDATA{
function func(a,b){
xxxx
}
}]></script>