何时在Javascript中使用<![CDATA[ ?

5

我曾经看到一些包含CDATA的Javascript代码,例如下面这个从http://www.w3schools.com/xml/xml_cdata.asp 复制的代码

<script>
    <![CDATA[
    function matchwo(a,b)
    {
    if (a < b && a < 0) then
      {
      return 1;
      }
    else
      {
      return 0;
      }
    }
    ]]>
    </script>

请注意,上面链接中包含了我所做的描述。然而,我还不能得出何时决定使用 CDATA 标记的结论。
如果有人能帮助我理解这个标记的目的以及何时使用它将是非常好的。

https://dev59.com/1XVD5IYBdhLWcg3wKYP- - Lightness Races in Orbit
3个回答

7
在XHTML中,脚本元素的内容被视为标记语言。因此,<&具有它们通常的特殊含义。CDATA块告诉解析器将内容视为文本而不是标记语言,因此您可以说“if x is less than y”而无需将<视为标记的起始部分。
请注意,如果您使用Content-Type text/html提供XHTML,则它将被视为破损的HTML而不是XML。我建议避免使用XHTML - 只有在您的工具链中有XML处理器并且对其进行操作以与HTML解析器协同工作是不必要的工作时才有用。只需编写HTML并完成它即可。

2
我们可以简单地说,我们需要CDATA部分,以便将您的文档解析为XML。

我已经阅读了那个,但仍然没有回答我的问题。如果解析器无视它,我们应该在什么时候使用它,它的目的是什么? - Nil Pun
这并不是关于验证器,而是任何XML解析器,包括浏览器。(如果您将XHTML作为text/html提供,因此它们不以XML模式解析,那么为什么要使用XHTML?) - Quentin

0

在HTML中,CDATA没有意义,但在XML中,它用于处理诸如尖括号和和符号等字符。当我需要在我的XSL转换中包含JavaScript时,我使用CDATA块。

了解CDATA的作用可能会帮助您了解何时使用它:“一些文本,例如JavaScript代码,包含大量“<”或“&”字符。为避免错误,脚本代码可以定义为CDATA。” 参见:HTML中的CDATA是什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接