0

我想使用 jquery 来转换包含像   这样的字符串的文本。 等转换为更易于阅读的形式。这适用于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

4 回答 4

8

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

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

小提琴

于 2013-05-17T19:27:28.503 回答
1

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

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

当您不信任输入 100% 时,使用它而不是 $(xxx).html()

于 2013-05-17T20:21:21.683 回答
0

,没有纯粹的编程方式不涉及让浏览器将字符串视为 HTML,如您的示例中所示。(顺便提一下,这样做时要注意不受信任的输入 - 这是等待发生的注入攻击。)

于 2013-05-17T19:29:37.660 回答
0

你应该能够做到:

return $('<div>'+ theVal + '</div>').html();
于 2013-05-17T19:30:48.407 回答