我試圖動態創建與不同HTML實體對應的data-*
屬性的HTMLElements列表,然後由CSS拾取並用作僞元素內容,如下所示:動態插入通過JavaScript爲CSS轉義的HTML實體
li:after {
content: attr(data-code);
}
這樣做的問題是,attr()
正確呈現實際的實體,而不是字面的代碼是prefix said code with &#x
- 典型的\
不起作用。
所以所需的輸出HTML是這樣的:<li data-code="NTITY"></li>
。當直接添加到HTML時,這與我的CSS規則完全相同。轉義的實體被放置在頁面中的:after
psuedo元素上,並呈現爲實體圖標。
這裏的事情變得好奇...
如前所述,我試圖創建和注入通過JavaScript(通過列表迭代)這些li
小號動態,而這也正是該障礙發生。
var entities = [{code: '😂'}, ...];
for (var i = 0; i < entitites.length; i++) {
var entity = entitites[i],
listItem = document.createElement('li');
listItem.setAttribute('data-code', entity.code);
list.appendChild(listItem);
}
的li
正確添加到DOM利用設定成格式正確的實體它就會由我的CSS規則回升。但是,不是呈現實體圖標,而是顯示代碼!
注意上面的圖片中,呈現的第一項是明確的頁面上的HTML。第二個項目通過JS注入(使用完全相同的代碼),然後通過CSS給出:after
元素。 Chrome的網頁檢測器甚至以不同的方式呈現它!
即使奇怪之處還在於,我可以通過WebInspector編輯HTML和手動進逃脫data-*
屬性 - 鉻STILL呈現正確的圖標!
我不知所措就在這裏,因此任何指導,將不勝感激!
這適用於常規線條笑臉,但不適用於此處記錄的擴展「emoji」集:http://apps.timwhitlock.info/unicode/inspect/hex/1F602 - 也許這是另一個特定於此字符集的問題? –
@JordanForeman我剛剛完成更新問題 - 請參閱編輯。 – Pointy
而且做到了!太棒了!感謝您的幫助@Pointy! –