如何将带有HTML实体的字符串转换为规范化形式?

时间:2013-05-17 19:26:02

标签: javascript jquery

我想使用jquery转换包含& nbsp;等字符串的文本
等等,形成一种更易读的形式。这适用于jsfiddle:

<input id="stupid-approach" type="hidden">

function js_text(theVal) {
    $("#stupid-approach").html(theVal);
    x = $("#stupid-approach").html();
    return x;
}

alert(js_text("&eacute;"));

但我想知道是否有办法不依赖于DOM中的隐藏字段?

4 个答案:

答案 0 :(得分:8)

只需创建一个空元素,就不需要在DOM中有一个实际的隐藏元素:

function js_text(theVal) {
    return $("<div />", {html: theVal}).text();
}

FIDDLE

答案 1 :(得分:1)

考虑到有关jQuery的.html()方法对脚本标签的评估的反馈,这里是一个更安全的本机版本,并不太笨重:

function js_text(theVal) {
    var div=document.createElement("div");
    div.innerHTML=theVal;
   return div.textContent;
}

当你不信任输入100%时,用它代替$(xxx).html()

答案 2 :(得分:0)

不。没有纯粹的程序化方法可以让浏览器将字符串视为HTML,就像在您的示例中一样。 (顺便说一下,当你这样做时要小心不受信任的输入 - 这是等待发生的注入攻击。)

答案 3 :(得分:0)

你应该能够做到:

return $('<div>'+ theVal + '</div>').html();