是否有关于特殊字符/实体和innerHTML的规则?

时间:2009-04-02 21:38:01

标签: javascript html browser cross-browser

当我从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

您可以使用gist页面上的“raw”链接,在浏览器中查看。

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

根据HTML spec

,它可能会用HTML字符实体替换它们