将 HTML 实体放入 document.createTextNode
Posted
技术标签:
【中文标题】将 HTML 实体放入 document.createTextNode【英文标题】:Getting HTML entities into document.createTextNode 【发布时间】:2013-09-12 05:17:49 【问题描述】:假设我有一个这样创建的字符串:str = '\\' + 'u00eb'
。如果我做document.createTextNode(str)
,它会给我'\u00eb
',而不是ë
。不要问我为什么,但我不能将我的字符串定义为str = '\u00eb'
。将我的字符串定义为str = 'ë'
或'ë'
也对我没有帮助。有关如何打印'ë'
的任何建议?
【问题讨论】:
为什么不能定义为str = '\u00eb'
?
一种可能性是var s = eval('"\\' + 'u00eb"');
。我知道你说过不要问为什么,但我很好奇为什么你不能直接在你的代码中使用正确的转义序列
str = '\' + 'u00eb'
是语法错误。
我不能直接写 '\u00eb',因为我使用 XMLHttpRequest 从 XML 文件中获取字符串,对此我的控制有限。
@PieterN 那么您将不得不用自己的代码解释数值,然后使用String.fromCharCode()
来构建字符串。
【参考方案1】:
怎么样
var str = String.fromCharCode(0xeb);
【讨论】:
如果我要翻译的总是 0xeb,那应该可以。不幸的是, str 可以包含各种字符......抱歉我的提问不清楚 @PieterN 正如我在对您的问题的评论中所说的那样,您必须编写代码来检测 XML 中的字符代码值,将它们解释为数值,然后构造字符串。您尚未提供 XML 实际外观的示例,因此很难更具体。【参考方案2】:如果进来的数据是这样的:
u00eb
然后,你可以自己解析十六进制字符串:
function insertText(parent, str)
if (str.charAt(0) == 'u')
str = String.fromCharCode(parseInt(str.slice(1), 16));
parent.appendChild(document.createTextNode(str));
工作演示:http://jsfiddle.net/jfriend00/pk5Bp/
【讨论】:
以上是关于将 HTML 实体放入 document.createTextNode的主要内容,如果未能解决你的问题,请参考以下文章