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

rin*_*ind 1 html javascript 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>
Run Code Online (Sandbox Code Playgroud)

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

http://gist.github.com/89434

您可以使用gist页面上的"raw"链接在浏览器中查看.

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

Mic*_*der 5

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

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