//..."> //..."/> //..."> //...">

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

HTML

ASamJim

2020-03-16

脚本标记中是否曾经需要CDATA标记?如果需要,何时?

换句话说,这是何时何地:

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

对此更可取:

<script type="text/javascript">
...code...
</script>

第1759篇《何时在脚本标记中需要CDATA节?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

13个回答
神奇Davaid 2020.03.16

当您希望它进行验证时(使用XML / XHTML-谢谢Loren Segal)。

Davaid梅 2020.03.16

CDATA在任何XML方言中都是必需的,因为XML节点内的文本在被评估为JavaScript之前被视为子元素。这也是JSLint抱怨正<表达式中字符的原因

参考文献

卡卡西Mandy 2020.03.16

这样,较旧的浏览器就不会解析Javascript代码,并且页面也不会中断。

向后兼容。要爱它。

Gil逆天 2020.03.16

CDATA告诉浏览器按原样显示文本,而不是将其呈现为HTML。

阿良 2020.03.16

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

米亚伽罗L 2020.03.16

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

Itachi十三Stafan 2020.03.16

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

这是维基百科的解释

Sam神无 2020.03.16

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

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

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

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

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

StafanJim 2020.03.16

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

A西里 2020.03.16

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

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

Stafan小哥 2020.03.16

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

JinJinGreen 2020.03.16

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

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

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

古一蛋蛋凯 2020.03.16

当浏览器将标记视为XML时:

<script>
<![CDATA[
    ...code...
]]>
</script>

当浏览器将标记视为HTML时:

<script>
    ...code...
</script>

当浏览器将标记视为HTML且您希望XHTML 1.0标记(例如)进行验证时。

<script>
//<![CDATA[
    ...code...
//]]>
</script>

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android