何时在脚本标记中需要 CDATA 节?

<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
<script type="text/javascript">
...code...
</script>

答案

如果您需要将文档解析为 XML(例如,将 XHTML 页面解释为 XML), 并且希望能够写i<10a && b而不是i&lt;10a &amp;&amp; b ;,则需要 CDATA 部分a &amp;&amp; b ,因为 XHTML 会将 JavaScript 代码解析为解析的字符数据,而不是默认的字符数据。这不是存储在外部源文件中的脚本的问题,但是对于 XHTML 中的任何内联 JavaScript,您可能都想使用 CDATA 部分。

请注意,绝不会将许多 XHTML 页面解析为 XML,在这种情况下,这不会成为问题。

有关此主题的出色文章,请参见https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm

<script>
<![CDATA[
    ...code...
]]>
</script>
<script>
    ...code...
</script>
<script>
//<![CDATA[
    ...code...
//]]>
</script>
<script>
var x = '</script>';
alert(x)
</script>
var x = '<' + '/script>'; // or
var x = '<\/script>';
<script>
if (a<b && c<d) {
    alert('Hooray');
}
</script>
if (a &gt; b) alert('hello world');

这是 X(HT)ML 的东西。当您在 JavaScript 中使用诸如<>之类的符号(例如,比较两个整数)时,必须像 XML 一样对其进行解析,因此它们将被标记为标签的开头或结尾。

CDATA 表示以下各行(直到]]>内容都不是 XML,因此不应以这种方式进行解析。

不要在 HTML4 使用 CDATA,但你应该在 XHTML 使用 CDATA,如果你有一个像 <和> 转义符号必须使用 CDATA 在 XML。

它可以确保当您的页面中而不是外部引用中嵌入 JavaScript 时,XHTML 验证可以正常工作。

XHTML 要求您的页面严格遵守 XML 标记要求。由于 JavaScript 可能包含具有特殊含义的字符,因此必须将其包装在 CDATA 中,以确保验证不会将其标记为格式错误。

使用网络上的 HTML 页面,您只需在和标记之间包含所需的 JavaScript。当您验证网页上的 HTML 时,JavaScript 内容被视为 CDATA(字符数据),因此验证器将其忽略。如果您在设置网页时遵循最新的 XHTML 标准,则情况并非如此。使用 XHTML 时,脚本标记之间的代码被认为是 PCDATA(解析的字符数据),因此由验证器进行处理。

因此,您不能仅在页面的脚本标签之间包含 JavaScript 而不会 “破坏” 您的网页(至少就验证器而言)。

您可以在此处了解有关 CDATA 的更多信息 ,并在此处了解有关 XHTML 的更多信息

CDATA 指示其中的内容不是 XML。

这是维基百科的解释

当您要严格遵守 XHTML 时,需要使用 CDATA,以使小于和与符号不会被标记为无效字符。

以避免在 xhtml 验证期间出现 xml 错误。