将 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的主要内容,如果未能解决你的问题,请参考以下文章

jQuery添加DOM元素

如何通过不同的方法将相同的实体放入 EhCache

以编程方式将核心数据实体中的项目放入 NSOutlineView?

Gson将参数放入实体类中进行包装之后再传递

html5动态添加button是怎么解决的?

js中的DOM操作汇总