【问题标题】:Are there any rules regarding special characters/entities and innerHTML?是否有关于特殊字符/实体和 innerHTML 的任何规则?
【发布时间】:2010-10-17 05:43:00
【问题描述】:

当我在 javascript 中使用 innerHTML 时,浏览器(至少是 Safari 和 Firefox)似乎会将某些字符和数字实体替换为其命名实体。

字符\xa0(不间断空格)被 替换, <(小于)被 < 替换。但是例如变音符号 ü 不会被替换为 ü。

我没有找到任何关于这种行为的文档。

一个简单的演示:

<h2 id="withoutnbsp">This does not use en be es pe (uses the \xa0 character)</h2>
<script>alert(document.getElementById("withoutnbsp").innerHTML);</script>

可以在这里找到更详细的演示:

http://gist.github.com/89434

您可以使用要点页面上的“原始”链接,在浏览器中查看它。

我需要确切地知道 innerHTML 替换了哪些字符。任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: javascript html browser cross-browser


    【解决方案1】:

    HTML 5 规范有在调用 innerHTML 时序列化 HTML 片段的规则,记录在此:Serializing HTML fragments(请注意,innerHTML 不在 HTML 4 规范中,因此 HTML 5 规范是当前参考) .

    规范的 TLDR 版本:空格、尖括号、与号、等号和双引号是调用 innerHTML 时唯一被转义的字符。

    【讨论】:

      【解决方案2】:

      根据HTML spec,它可能会用 HTML 字符实体替换它们。

      【讨论】:

      • 不幸的是,事情没那么简单。变音符号和其他字符被单独留下(ü 不转换为 ü)。我已经澄清了我在这方面的问题。
      猜你喜欢
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2020-07-22
      • 1970-01-01
      相关资源
      最近更新 更多