为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2019-06-09 15:54:58
什么时候脚本标记中需要CDATA部分?在脚本标记中是否需要CDATA标记?如果需要,什么时候需要?换言之,何时何地:<script type="text/javascript">//<![CDATA[...code...//]]></script>比这更可取的是:<script type="text/javascript">...code...</script>
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

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

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

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

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

当浏览器将标记视为HTML,并希望您的XHTML1.0标记(例如)进行验证时。

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


查看完整回答
反对 回复 2019-06-09
?
MMTTMM

TA贡献1869条经验 获得超4个赞

HTML

HTML解析器将处理<script></script>作为剧本的一部分。有些实现甚至不需要正确的结束标记;它们在“</“,根据规格.

更新在HTML 5中,在当前的浏览器中,情况不再是这样了。

所以,在HTML中,这是可能:

<script>var x = '</script>';
alert(x)</script>

CDATA一点效果也没有..所以你需要写

var x = '<' + '/script>'; // or
var x = '<\/script>';

或者类似的。

这也适用于作为text/html..(由于IE不支持XML内容类型,这基本上是正确的。)

XML

在XML中,适用不同的规则。注意,(非IE)浏览器仅在XHMTL文档与XML内容类型一起使用时才使用XML解析器。

对于XML解析器,script标签并不比任何其他标签好。特别是,脚本节点可能包含由“<“;和”&“符号表示字符实体。

所以,在XHTML中,这是可能:

<script>if (a<b && c<d) {
    alert('Hooray');}</script>

若要解决此问题,可以将整个脚本包装在CDATA部分。这告诉解析器:‘在本节中,不要治疗“<“和”&“作为控制字符.‘以防止JavaScript引擎解释<![CDATA[“和”]]>“标记,您可以用注释将它们包装起来。

如果您的脚本不包含任何“<“或”&“,你不需要CDATA不管怎么说。


查看完整回答
反对 回复 2019-06-09
  • 3 回答
  • 0 关注
  • 424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号