当我从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>
可以在这里找到更精细的演示:
您可以使用gist页面上的“raw”链接,在浏览器中查看。
我需要确切地知道innerHTML替换了哪些字符。任何帮助表示赞赏。感谢。
答案 0 :(得分:5)
HTML 5规范具有在您调用innerHTML时序列化HTML片段的规则,在此处记录:Serializing HTML fragments(请注意,innerHTML不在HTML 4规范中,因此HTML 5规范是当前的参考)。
规范的TLDR版本:空格,尖括号,&符号,等号和双引号是调用innerHTML时唯一可以转义的字符。
答案 1 :(得分:1)
根据HTML spec。
,它可能会用HTML字符实体替换它们