淺說XHTML中CDATA_XHTML教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
近來,隨著XHTML(可擴展HTML)標準的出現(xiàn),<script/>標簽也經(jīng)歷了一些改變。該標簽不再用language特性,而用type特性聲明內(nèi)嵌代碼或要加入的外部文件的mime類型,JavaScript的mime類型是"text/javascript"。例如:
即使許多瀏覽器不完全支持XHTML,但大多數(shù)開發(fā)者現(xiàn)在都用type特性,而不用language特性,以提供更好的XHTML支持。省略language特性不會帶來任何問題,因為如前所述,所有瀏覽器都默認<script/>的該屬性值為JavaScript。
XHTML的第二個改變是使用CDATA段。XML中的CDATA段用于聲明不應被解析為標簽的文本(XHTML也是如此),這樣就可以使用非凡字符,如小于(<)、大于(>)、和號(&)和雙引號("),而不必使用它們的字符實體。考慮下面的代碼:
這個函數(shù)相當簡單,它比較數(shù)字a和b,然后顯示消息說明它們的關系。但是,在XHTML中,這段代碼是無效的,因為它使用了三個非凡符號,即小于、大于和雙引號。要修正這個問題,必須分別用這三個字符的XML實體<、>和"替換它們:
這段代碼存在兩個問題。首先,開發(fā)者不習慣用XML實體編寫代碼。這使代碼很難讀懂。其次,在JavaScript中,這種代碼實際上將視為有語法錯,因為解釋程序不知道XML實體的意思。用CDATA段即可以以常規(guī)形式(即易讀的語法)編寫JavaScript代碼。正式加入CDATA段的方法如下:
雖然這是正式方式,但還要記住,大多數(shù)瀏覽器都不完全支持XHTML,這就帶來主要問題,即這在JavaScript中是個語法錯誤,因為大多數(shù)瀏覽器還不熟悉CDATA段。
當前使用的解決方案模擬了“對舊瀏覽器隱藏”代碼的方法。使用單行的JavaScript注釋,可在不影響代碼語法的情況下嵌入CDATA段:
示例代碼 [www.hl5o.cn]
<html>
<head>
<title>Title of Page</title>
<script type=”text/javascript”>
var i = 0;
</script>
<script type=”text/javascript” src=”../scripts/external.js”></script>
</head>
<body>
<!-- body goes here -->
</body>
</html>
<head>
<title>Title of Page</title>
<script type=”text/javascript”>
var i = 0;
</script>
<script type=”text/javascript” src=”../scripts/external.js”></script>
</head>
<body>
<!-- body goes here -->
</body>
</html>
即使許多瀏覽器不完全支持XHTML,但大多數(shù)開發(fā)者現(xiàn)在都用type特性,而不用language特性,以提供更好的XHTML支持。省略language特性不會帶來任何問題,因為如前所述,所有瀏覽器都默認<script/>的該屬性值為JavaScript。
XHTML的第二個改變是使用CDATA段。XML中的CDATA段用于聲明不應被解析為標簽的文本(XHTML也是如此),這樣就可以使用非凡字符,如小于(<)、大于(>)、和號(&)和雙引號("),而不必使用它們的字符實體。考慮下面的代碼:
示例代碼 [www.hl5o.cn]
<SCRIPT type=”text/javascript”>
function compare(a, b) {
if (a < b) {
alert(“A is less than B”);
} else if (a > b) {
alert(“A is greater than B”);
} else {
alert(“A is equal to B”);
}
}
</SCRIPT>
function compare(a, b) {
if (a < b) {
alert(“A is less than B”);
} else if (a > b) {
alert(“A is greater than B”);
} else {
alert(“A is equal to B”);
}
}
</SCRIPT>
這個函數(shù)相當簡單,它比較數(shù)字a和b,然后顯示消息說明它們的關系。但是,在XHTML中,這段代碼是無效的,因為它使用了三個非凡符號,即小于、大于和雙引號。要修正這個問題,必須分別用這三個字符的XML實體<、>和"替換它們:
示例代碼 [www.hl5o.cn]
<SCRIPT type=”text/javascript”>
function compare(a, b) {
if (a < b) {
alert("A is less than B");
} else if (a > b) {
131
JavaScript in the Browser
alert("A is greater than B");
} else {
alert("A is equal to B");
}
}
</SCRIPT>
function compare(a, b) {
if (a < b) {
alert("A is less than B");
} else if (a > b) {
131
JavaScript in the Browser
alert("A is greater than B");
} else {
alert("A is equal to B");
}
}
</SCRIPT>
這段代碼存在兩個問題。首先,開發(fā)者不習慣用XML實體編寫代碼。這使代碼很難讀懂。其次,在JavaScript中,這種代碼實際上將視為有語法錯,因為解釋程序不知道XML實體的意思。用CDATA段即可以以常規(guī)形式(即易讀的語法)編寫JavaScript代碼。正式加入CDATA段的方法如下:
示例代碼 [www.hl5o.cn]
<SCRIPT type=”text/javascript”><![CDATA[
function compare(a, b) {
if (a < b) {
alert(“A is less than B”);
} else if (a > b) {
alert(“A is greater than B”);
} else {
alert(“A is equal to B”);
}
}
]]></SCRIPT>
function compare(a, b) {
if (a < b) {
alert(“A is less than B”);
} else if (a > b) {
alert(“A is greater than B”);
} else {
alert(“A is equal to B”);
}
}
]]></SCRIPT>
雖然這是正式方式,但還要記住,大多數(shù)瀏覽器都不完全支持XHTML,這就帶來主要問題,即這在JavaScript中是個語法錯誤,因為大多數(shù)瀏覽器還不熟悉CDATA段。
當前使用的解決方案模擬了“對舊瀏覽器隱藏”代碼的方法。使用單行的JavaScript注釋,可在不影響代碼語法的情況下嵌入CDATA段:
示例代碼 [www.hl5o.cn]
<SCRIPT type=”text/javascript”>
//<![CDATA[
function compare(a, b) {
if (a < b) {
alert(“A is less than B”);
} else if (a > b) {
alert(“A is greater than B”);
} else {
alert(“A is equal to B”);
}
}
//]]>
</SCRIPT>
//<![CDATA[
function compare(a, b) {
if (a < b) {
alert(“A is less than B”);
} else if (a > b) {
alert(“A is greater than B”);
} else {
alert(“A is equal to B”);
}
}
//]]>
</SCRIPT>
相關XHTML教程:
- HTML5 INPUT placeholder及兼容性處理
- HTML表單里的Label標簽
- 淺析HTML與javascript中常用編碼
- CSS網(wǎng)頁布局中必須要了解的幾個XHTML標簽
- title和alt 標簽介紹及其異同
- 淺析HTML標簽strong和em的區(qū)別
- 說說XHTML中的alt屬性和title屬性
- Semantics語義是Html Xhtml是否真正符合標準的重要部分
- 九個W3C XHTML1.0及CSS標準認證需要注意的問題
- 請注意頁面head區(qū)域的編碼是不是規(guī)范
- HTML validate - 驗證HTML代碼穿越多重瀏覽器標準
- XHTML具有語義的標簽:有關H1位置的討論
- 相關鏈接:
- 教程說明:
XHTML教程-淺說XHTML中CDATA
。