標籤:
<script>元素
- async:可選 表示應該立即下載指令碼,但不應妨礙頁面中的其他動作,比如下載其他資源或等待載入其他指令碼。只對外部指令碼有效。
- charset:可選 通過src指定代碼的字元集,大多數瀏覽器會忽略它的值,很少人用。
- defer:可選 表示指令碼可以延遲到文檔完全被解析和顯示之後再執行。只對外部指令檔有效。
- language 已廢棄
- src 可選 表示包含要執行的外部檔案
- type: 可選表示編寫代碼使用的指令碼語言的內容類型也叫MIME類型,預設為text/javascript
包含在<script>中的JavaScript代碼將被從上至下依次執行解釋,就拿前面這個例子來說,解譯器會解釋一個函數的定義,然後將該定義儲存在自己的環境當中。在解譯器對<script>元素內容的所有代碼求值完畢以前,頁面中的其餘內容都不會被瀏覽器載入或顯示。 帶有src屬性的<script>元素不應該在其<script>和</script>之間再包含額外的JavaScript代碼,如果包含了嵌入的代碼,則只會下載並執行外部指令檔,嵌入的代碼會被忽略。 只要不包含defer和async屬性,瀏覽器都會按照<script>元素在頁面中出現的先後順序對他們依次進行解析。 defer="defer" 告訴瀏覽器立即下載該檔案,但會延遲到瀏覽器遇到</html>標籤後再執行。延遲指令碼會按順序執行 <script type="text/javascript" async src="example1.js"></script><script type="text/javascript" async src="example2.js"></script>第二個指令檔可能會在第一個指令檔之前執行。因此,確保兩者之間互不依賴非常重要,指定async屬性的目的是不讓頁面等待兩個指令碼下載和執行,從而非同步載入頁面其他內容,因此,建議非同步指令碼不要在載入期間修改DOM。非同步指令碼一定會在頁面的load事件前執行,但可能會在DOMContentLoaded事件觸發之前或之後執行。 在XHTML中的用法<script> //<![CDATA[ //]]>
</script> <noscript></noscript>當瀏覽器不支援指令碼或指令碼被禁用的時候顯示 總結:
- 在包含外部JavaScript檔案時,必須將src屬性設定為指向相應檔案的URL。而這個檔案既可以是一個伺服器上的檔案,也可以是其他域中的檔案。
- 所有<script>會按照他們在頁面中出現的先後順序依次被解析。在不使用defer和async屬性的情況下,只有解析完前面的<script>元素中的代碼後,才會開始解析後面<script>元素中的代碼。
- 由於瀏覽器會先解析前面不使用defer的<script>代碼,然後再解析後面的內容,所以,應該把<script>元素放在最後,即</body>的前面。
- 使用defer可以讓指令碼在文檔完全呈現之後再執行。延遲指令碼總是按照指定他們的順序執行。
- 使用async屬性可以表示當前指令碼不必等待其他指令碼,也不必阻塞文檔呈現。不能保證非同步指令碼按照它們在頁面中的出現的順序執行。
第二章 在HTML中使用JavaScript