script標籤

李德東發表於2017-04-01

<script />的寫法

 剛剛跟著demo學習的過程中遇到了一個問題:

<script type="text/javascript" src="jquery-1.1.3.pack.js" />  這樣的寫法貌似是不能執行的。

<script type="text/javascript" src="jquery-1.1.3.pack.js" > </script> 只能這樣結束。

一直不知道什麼原因 一點點排除才發現的。

去百度了一下:

比如<script>標籤,當前部分瀏覽器就不支援<script />這種在開始標籤中直接關閉的寫法。

我們很容易會認為,引用外部指令碼檔案的<script>沒有內容,那是否可以直接在開始標籤中關閉<script>,寫成下面這樣呢? <script type="text/javascript" src="xxx.js" /> 實測結果告訴我們,這樣做是有問題的。

某些瀏覽器不認這種寫法,它們會將緊接在<script />標籤後面的內容都當作指令碼內容來處理,直到遇見下一個</script>關閉標籤。

避免這個問題也很簡單: 對於<script>標籤,永遠都使用單獨的關閉標籤</script>,這樣所有瀏覽器都能夠按照預期的效果來解析:

<script type="text/javascript" src="xxx.js"></script>

具有類似問題的標籤還有一些,比如<iframe>。解決辦法同上。

進一步說,想要徹底解決這一類問題的話,請將所有標籤的開始和結束都分開寫吧: <img src="xxx"></img> <hr></hr>

順帶一提,這樣還能解決另一個問題:

在開始標籤中關閉的話,斜槓前必須留有空格——很多時候人們會很容易漏掉這個空格,據說這樣某些瀏覽器的解析也會出問題。

既然我所有的開始結束標籤都分開寫了,那這個問題不是自然就沒有了麼?

這麼做太極端?那就只記住這幾個特例吧:首先就是<script>和<iframe>。

目前看來,WinXP SP3下IE6/7/8和FF3都有這個問題的,Opera10/Chrome5/Safari5則沒有。

不過另一個<iframe>標籤同樣的問題,上面這些瀏覽器則好像無一倖免了。

相關文章