2014-11-24 83 views
3

我正在学习字符编码,但现在略有混淆。HTML实体在浏览器中呈现的方式不同

在下面的代码,在控制台我得到的输出>和浏览器中正确呈现为“>”。

<div id="test">&gt;</div> 
</body> 
<script type="text/javascript"> 
x = document.getElementById("test").innerHTML; 
console.log(x); 
</script> 

但是,如果我用这个实体&weierp;代替&gt;,我得到的渲染输出都在控制台和浏览器。

这两个实体之间的区别是什么?它为什么在控制台中显示不同?

enter image description here

+0

您需要一个适合该字符的字形。 – Gumbo 2014-11-24 10:15:58

+2

@Gumbo也许你误解了? '>'在控制台中以HTML实体的形式输出,而'&weierp;'在控制台中被解释并呈现为正确的字符。缺少字体在这里没有问题。 – deceze 2014-11-24 10:20:12

+0

'innerText'输出呈现的字符... – feeela 2014-11-24 10:26:06

回答

2

当你写在控制台日志中的元素,如第8.3 Serializing HTML fragments W3C的HTML5规范中描述的浏览器应用HTML序列化。在条款末尾的转义规则规定:

  1. 更换用字符串“&amp;”中的“&”字符的任何发生。

  2. 将字符串“&nbsp;”替换为任何出现的U + 00A0无间隔空格字符 。

  3. 如果该算法是在属性模式调用“,由串字符‘"’更换任何 出现了“”的。

  4. 如果该算法未在属性模式调用,更换任何 出现由字符串“&lt;”该“<”字符,以及任何 出现由字符串“&gt;”该“>”字符。

因此,在将元素内容写入日志时,&符号和不分隔空格将呈现为字符引用,而其他字符则是这样。当浏览器从HTML标记中构建内部表示DOM时,它会用实际的“℘”字符替换参考&weierp;。类似的操作发生在所有的字符引用上,包括&gt;,但提到的两个字符都被渲染为引用,不管它们在HTML源代码中如何表示。

+0

这证明了。感谢你的努力 – Abhinav 2014-11-25 06:12:52

相关问题