Javascript解码html实体

pet*_*ski 61 javascript jquery

可能重复:
如何使用jQuery解码HTML实体?

我想转换这个文字:

"<p>name</p><p><span style="font-size:xx-small;">ajde</span></p><p><em>da</em></p>"
Run Code Online (Sandbox Code Playgroud)

到HTML,带有标签和Javascript或Jquery中的所有内容.这该怎么做?

Dar*_*rov 166

var text = '<p>name</p><p><span style="font-size:xx-small;">ajde</span></p><p><em>da</em></p>';
var decoded = $('<textarea/>').html(text).text();
alert(decoded);
Run Code Online (Sandbox Code Playgroud)

这将设置new元素的innerHTML(不附加到页面),导致jQuery将其解码为HTML,然后使用.text()将其拉回.

现场演示.

  • 不要使用`$('<div />')` - 我没有做出可靠的XSS攻击.使用`$('<textarea />');` (39认同)
  • 如果文本是""> <img rel="nofollow noreferrer" src = x onerror = prompt(1)>`,该怎么办? (3认同)
  • 我不确定这是否也合适(我使用的是 jQuery 2.x):`$.parseHTML(text)[0].textContent;` (2认同)

Boj*_*les 18

这个帖子中有一个jQuery解决方案.尝试这样的事情:

var decoded = $("<div/>").html('your string').text();
Run Code Online (Sandbox Code Playgroud)

这会设置一个新<div>元素的innerHTML (不会附加到页面上),从而导致jQuery将其解码为HTML,然后将其拉回.text().


Vis*_*ioN 9

使用jQuery最简单的方法是:

var text = '&lt;p&gt;name&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;ajde&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;da&lt;/em&gt;&lt;/p&gt;';

var output = $("<div />").html(text).text();
console.log(output);
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/LKGZx/

  • 与其他两个答案相同.如果删除答案,你将获得荣誉徽章:) (4认同)