使用JavaScript的XHTML中奇怪的CDATA行为
我正在使用blogger,我想从头开始制作自己的模板,所以我开始了解事物的基本结构。 在我的旅程中,我遇到了CDATA的事情 我想测试这段代码使用JavaScript的XHTML中奇怪的CDATA行为,javascript,xhtml,Javascript,Xhtml,我正在使用blogger,我想从头开始制作自己的模板,所以我开始了解事物的基本结构。 在我的旅程中,我遇到了CDATA的事情 我想测试这段代码 <html> <head> <b:skin> <![CDATA[ ]]> </b:skin> </head> <body> <b:section id='post'/> <script>
<html>
<head>
<b:skin>
<![CDATA[ ]]>
</b:skin>
</head>
<body>
<b:section id='post'/>
<script>
if(true&&true)
alert("hello");
</script>
</body>
</html>
if(true&&true)
警惕(“你好”);
它给了我一个错误,我知道“&”应该是“&”,因为它是xhtml,所以我添加了cdata,我的代码将变成这样
<html>
<head>
<b:skin>
<![CDATA[ ]]>
</b:skin>
</head>
<body>
<b:section id='post'/>
<script>
<![CDATA[
if(true&&true)
alert("hello");
]]>
</script>
</body>
</html>
现在我测试了它,警报消息就不会显示了,所以我在开始和结束CDATA标记之前放了//,它就工作了。
我想了解为什么它使用//而不是不使用。Blogger将XML模板解析为XML,因此它们必须是有效的XML才能与Blogger的后端一起工作 然而,当Blogger将结果页面提供给浏览器时,它表示内容类型为
text/html;charset=UTF-8(这是错误的,因为它是XHTML(但请参见下文))
HTML和XHTML是不同的语言,因此当浏览器将XHTML解析为HTML时,它不会对执行任何特殊操作,只会将其传递给JavaScript引擎
不是有效的JavaScript,因此会引发异常
通过在其前面加上前缀/
,可以将无效的JavaScript更改为有效的JavaScript行注释
旁白:XHTML和HTML非常相似,如果你愿意,你可以假装你的XHTML是HTML。而当Blogger将结果页面提供给浏览器时,它会说内容类型是text/HTML;字符集=UTF-8哪个错误?