XHTML應該通過使用媒體類型application/xhtml+xml
作爲XML提供。在HTML5中,標記僅爲 XHTML(如果使用XML媒體類型)。當像這樣服務時,腳本元素的內容是而不是 CDATA。
因此,要讓XML解析器將腳本內容視爲CDATA,它們可以包裝在<![CDATA[ ]]>
中。
儘管很少有人歷史上將標記作爲application/xhtml+xml
,但許多人已經將他們的頁面驗證爲XHTML。 XHTML驗證器同樣期望腳本內容通常不是CDATA,因此通常會拒絕嵌入在JavaScript中的標記和其他標記碎片,除非它們被轉義,除非它們被轉義<![CDATA[ ]]>
驗證其頁面爲XHTML後,它們會然後以text/html
媒體類型向瀏覽器提供其頁面,這意味着瀏覽器將標記視爲HTML而不是XHTML。在這種情況下,使用HTML解析器,其中確實將腳本內容自動視爲CDATA,因此<![CDATA[
和]]>
。成爲由JavaScript引擎運行的腳本的一部分。因此,要從JavaScript引擎中隱藏這些字符串,它們在同一行上以//
開頭,這意味着JavaScript引擎認爲這些行是註釋。
最後,有些人服務於application/xhtml+xml
和text/html
的相同標記,根據HTTP請求消息中的信息進行切換。出於與上述相同的原因,要在兩種模式下正確處理腳本內容,//<![CDATA[
和//]]>
模式是非常有效的技術。
它被註釋掉,否則你會得到一個JS語法錯誤。我目前沒有看到CDATA在HTML腳本標記中被大量使用,並且不會自己使用它。也許是從XHTML的日子開始的,因爲CDATA是一個XML構造,而XHTML使用了許多XML的規則。 – Netricity 2013-05-05 08:15:26