我想知道如何在 CDATA 部分中声明 JavaScript 代码以使其与 XHTML 兼容。哪种方法正确/推荐?
方法一:
<script type="text/javascript">
// <![CDATA[
CODE
// ]]>
</script>
方法二:
<script type="text/javascript">
/* <![CDATA[ */
CODE
/* ]]> */
</script>
第二个是否也适用于内联 CSS?
并且,是否可以/是否有意义地在此处添加一些编码声明
<script type="text/javascript" charset="utf-8">
...
<style type="text/css" media="screen" charset="utf-8">
...
or
<script type="text/javascript">
@charset "utf-8";
...
<style type="text/css" media="screen">
@charset "utf-8";
...
最佳答案
Which method is correct/recommended?
两者都一样好。
Is the second one also suitable for inline CSS?
是的。
但是,您只需要担心将脚本和样式 block 放在 <![CDATA[
中当您要包含字符 <
时的部分或 &
在 block 中。您几乎永远不会在 CSS 中使用它们。
您可能会在 JavaScript 中使用它们,但通常最好通过将大量代码放在其所属的外部脚本中来避免此问题。内联脚本 block 往往更适合放入数据和脚本调用调用,这很少需要使用 <
或 &
(字符串文字值除外,在这种情况下,有一个参数将它们编码为例如 \x3C
)。
And, is it possible/does it make sense to add some encoding declaration here
没有。 charset="..."
属性只对外部文件有意义(并且在 <style>
上不存在,因为它永远不是外部文件)。内部内容已经与包含文档的其余部分同时从字节解码为字符,因此 charset
在这一点上是没有意义的。
无论如何,并不是所有的浏览器都会关注 <script charset>
属性,因此您必须使脚本的编码与包含它们的页面的编码相匹配。这使得 charset="..."
相当多余。
@charset "utf-8";
在外部样式表中是可以的,但是您几乎从不需要样式表中的非 ASCII 字符,因此很少见。 @charset
在 JavaScript 中无效。
关于javascript - 如何声明 JavaScript 和 CSS XHTML 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2884013/