我知道像
或ö
或ð
这样的html实体不能在这样的css中使用:
div.test:before {
content:"text with html-entities like ` ` or `ö` or `ð`";
}
有一个很好的问题可以解决这个问题的好答案:Adding HTML entities using CSS content
但是我正在读取通过AJAX从服务器放入css-content的字符串。在用户客户端上运行的JavaScript接收带有嵌入式html实体的文本,并从中创建样式内容,而不是将其作为文本元素放入html元素的内容中。这种方法可以帮助那些试图通过复制和粘贴窃取我内容的小偷。不属于html文档(但是css-content的一部分)的文本真的很难复制。这种方法很好。这个html实体只有这个令人讨厌的问题。
所以我需要在运行时将html-entities转换为unicode转义序列。我可以在带有perl脚本的服务器上或在带有JavaScript的客户端上执行此操作,但我不想编写包含所有现有命名实体的完整列表的子例程。 html5中有超过2200个命名实体,如下所示:http://www.w3.org/TR/2011/WD-html5-20110113/named-character-references.html每次更改此列表时,我都不想更改子例程。 (数字实体没问题。)
使用javascript进行此转换是否有任何技巧?也许通过添加,读取和删除DOM的内容? (我正在使用jQuery)
答案 0 :(得分:0)
我找到了解决方案:
var text = 'Text that contains html-entities';
var myDiv = document.createElement('div');
$(myDiv).html(text);
text = $(myDiv).text();
$('#id_of_a_style-element').html('#id_of_the_protected_div:before{content:"' + text + '"}');
撰写问题是得到这个答案的一半。我希望这个答案也可以帮助其他人。