2014-11-24 84 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

相關問題