Frage an jquery, javascript – Javascript-Dekodierung von HTML-Entitäten [duplizieren]

61

Mögliche Duplikate:
Wie dekodiere ich HTML-Entities mit jQuery?

Ich möchte diesen Text konvertieren:

"<p>name</p><p><span style="font-size:xx-small;">ajde</span></p><p><em>da</em></p>"

in HTML, mit Tags und allem in Javascript oder JQuery. Wie macht man das?

Ihr endgültiger Export: <p> Name </ p> <p> <span style = "Schriftgröße: xx-small;"> ajde </ span> </ p> <p> <em> da </ em> </ p> </ body> EmRa228
Am einfachsten ist es, Ihrem Element einen Klassenselektor zuzuweisen und dann diesen Code zu verwenden$('.selector').each(function(a,b){$(b).html($(b).text())}) Hamidreza

Deine Antwort

4   die antwort
166
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 decoded = $('<textarea/>').html(text).text();
alert(decoded);

hängt) und bewirkt, dass jQuery es in HTML dekodiert, das dann mit .text () wieder herausgezogen wird.

Live-Demo.

Ich bin mir nicht sicher, ob dies auch richtig ist (ich verwende jQuery 2.x):$.parseHTML(text)[0].textContent; Ricky
Was ist, wenn der Text ist"><img src=x onerror=prompt(1)>? viky
Wenn codierte Zeichenfolge enthältEingeben Zwischen Tags signieren, dies ergibt nurEingeben anstelle von HTML (zumindest in Chrome). Um das Problem zu beheben, habe ich die Lösung in geändert$('<textarea/>').html(text).html() Sasha
nicht benutzen$('<div/>') - Ich mache keinen XSS-Angriff möglich. Benutzen$('<textarea/>'); trijin
Es ist eine sehr schlechte Idee, weil HTML-Injection erlaubt ist. Wenn Sie beispielsweise im eingehenden Text Folgendes haben:<script>alert(code injection')</script> Auf dem Benutzerbildschirm wird eine Warnung angezeigt. Josh
18

Es gibt eine jQuery-Lösung indieser Thread. Versuchen Sie so etwas:

var decoded = $("<div/>").html('your string').text();

Dies setzt das innerHTML eines neuen<div> Element (nicht an die Seite angehängt), wodurch jQuery es in HTML dekodiert, das dann mit zurückgezogen wird.text().

nicht in Firefox arbeiten XIMRX
9

Mit jQuery ist es am einfachsten:

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);

DEMO: http://jsfiddle.net/LKGZx/

Gleich wie die beiden anderen Antworten. Sie erhalten ein Ehrenzeichen, wenn Sie die Antwort löschen :) Dan Dascalescu
3

Ich glaube du suchst das?

$('#your_id').html('&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;').text();

Verwandte Fragen