什么时候脚本标记中需要CDATA部分?

什么时候脚本标记中需要CDATA部分?

在脚本标记中是否需要CDATA标记?如果需要,什么时候需要?

换言之,何时何地:

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

比这更可取的是:

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


猛跑小猪
浏览 425回答 3
3回答

波斯汪

当浏览器将标记视为XML时:<script><![CDATA[ &nbsp;&nbsp;&nbsp;&nbsp;...code...]]></script>当浏览器将标记视为HTML时:<script> &nbsp;&nbsp;&nbsp;&nbsp;...code...</script>当浏览器将标记视为HTML,并希望您的XHTML1.0标记(例如)进行验证时。<script>//<![CDATA[ &nbsp;&nbsp;&nbsp;&nbsp;...code...//]]></script>

MMTTMM

HTMLHTML解析器将处理<script>和</script>作为剧本的一部分。有些实现甚至不需要正确的结束标记;它们在“</“,根据规格.更新在HTML 5中,在当前的浏览器中,情况不再是这样了。所以,在HTML中,这是不可能:<script>var&nbsp;x&nbsp;=&nbsp;'</script>'; alert(x)</script>A&nbsp;CDATA科一点效果也没有..所以你需要写var&nbsp;x&nbsp;=&nbsp;'<'&nbsp;+&nbsp;'/script>';&nbsp;//&nbsp;or var&nbsp;x&nbsp;=&nbsp;'<\/script>';或者类似的。这也适用于作为text/html..(由于IE不支持XML内容类型,这基本上是正确的。)XML在XML中,适用不同的规则。注意,(非IE)浏览器仅在XHMTL文档与XML内容类型一起使用时才使用XML解析器。对于XML解析器,script标签并不比任何其他标签好。特别是,脚本节点可能包含由“<“;和”&“符号表示字符实体。所以,在XHTML中,这是不可能:<script>if&nbsp;(a<b&nbsp;&&&nbsp;c<d)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;alert('Hooray');}</script>若要解决此问题,可以将整个脚本包装在CDATA部分。这告诉解析器:‘在本节中,不要治疗“<“和”&“作为控制字符.‘以防止JavaScript引擎解释<![CDATA[“和”]]>“标记,您可以用注释将它们包装起来。如果您的脚本不包含任何“<“或”&“,你不需要CDATA不管怎么说。
打开App,查看更多内容
随时随地看视频慕课网APP