使用JavaScript的XHTML中奇怪的CDATA行为

使用JavaScript的XHTML中奇怪的CDATA行为,javascript,xhtml,Javascript,Xhtml,我正在使用blogger,我想从头开始制作自己的模板,所以我开始了解事物的基本结构。 在我的旅程中,我遇到了CDATA的事情 我想测试这段代码 <html> <head> <b:skin> <![CDATA[ ]]> </b:skin> </head> <body> <b:section id='post'/> <script>

我正在使用blogger,我想从头开始制作自己的模板,所以我开始了解事物的基本结构。 在我的旅程中,我遇到了CDATA的事情 我想测试这段代码

<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哪个错误?