具有 JavaScript 的 XHTML 中的奇怪 CDATA 行为
Strange CDATA behavior in XHTML with JavaScript
我正在使用 Blogger,我想从头开始制作我自己的模板,所以我开始了解事物的基本结构。
在我的旅程中,我遇到了 CDATA 的东西
我想测试这段代码。
<html>
<head>
<b:skin>
<![CDATA[ ]]>
</b:skin>
</head>
<body>
<b:section id='post'/>
<script>
if(true&&true)
alert("hello");
</script>
</body>
</html>
它给我一个错误,我知道“&”应该是“&”,因为它是 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 将生成的页面提供给浏览器时,它说 Content-Type 是 text/html; charset=UTF-8
(这是错误的,因为它是 XHTML(但见下文))。
HTML 和 XHTML 是不同的语言,所以当浏览器将 XHTML 解析为 HTML 时,它不会对 [=11= 做任何特殊的事情] 并将其传递给 JavaScript 引擎。
<![CDATA[
无效 JavaScript,因此抛出异常。
通过添加前缀 //
,您可以将无效的 JavaScript 更改为有效的 JavaScript 行注释。
旁白:XHTML 和 HTML 非常相似,你可以假装你的 XHTML 是 HTML 如果你 follow the compatibility guidelines.
我正在使用 Blogger,我想从头开始制作我自己的模板,所以我开始了解事物的基本结构。 在我的旅程中,我遇到了 CDATA 的东西 我想测试这段代码。
<html>
<head>
<b:skin>
<![CDATA[ ]]>
</b:skin>
</head>
<body>
<b:section id='post'/>
<script>
if(true&&true)
alert("hello");
</script>
</body>
</html>
它给我一个错误,我知道“&”应该是“&”,因为它是 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 将生成的页面提供给浏览器时,它说 Content-Type 是 text/html; charset=UTF-8
(这是错误的,因为它是 XHTML(但见下文))。
HTML 和 XHTML 是不同的语言,所以当浏览器将 XHTML 解析为 HTML 时,它不会对 [=11= 做任何特殊的事情] 并将其传递给 JavaScript 引擎。
<![CDATA[
无效 JavaScript,因此抛出异常。
通过添加前缀 //
,您可以将无效的 JavaScript 更改为有效的 JavaScript 行注释。
旁白:XHTML 和 HTML 非常相似,你可以假装你的 XHTML 是 HTML 如果你 follow the compatibility guidelines.