Pytanie w sprawie jquery, javascript – Dekodowanie JavaScript encji HTML [duplikat]

61

Możliwy duplikat:
Jak dekodować encje HTML za pomocą jQuery?

Chcę przekonwertować ten tekst:

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

do html, z tagami i wszystkim w Javascript lub Jquery. Jak to zrobić?

twój ostateczny eksport: <p> nazwa</p> <p> <span style = "font-size: xx-small;"> ajde </span> </p> <p> <em> da </em> </p> </body> EmRa228
Najprostszym sposobem jest przypisanie selektora klasy do elementu, a następnie użycie tego kodu$('.selector').each(function(a,b){$(b).html($(b).text())}) Hamidreza

Twoja odpowiedź

4   odpowiedź
9

Najłatwiej będzie używać 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);

PRÓBNY: http://jsfiddle.net/LKGZx/

Podobnie jak pozostałe dwie odpowiedzi. Otrzymasz odznakę honoru, jeśli usuniesz odpowiedź :) Dan Dascalescu
18

Istnieje rozwiązanie jQuery wten wątek. Spróbuj czegoś takiego:

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

To ustawia innerHTML nowego<div> element (nie dołączony do strony), powodujący dekodowanie jQuery w HTML, który jest następnie wycofywany z.text().

nie działa w Firefoksie XIMRX
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);

To ustawia innerHTML nowego elementu (nie dołączonego do strony), powodując, że jQuery dekoduje go do HTML, który jest następnie wycofywany z .text ().

Demo na żywo.

Gdy zakodowany ciąg zawieraWchodzić znak między znacznikami, to powraca po prostuWchodzić zamiast html (przynajmniej w Chrome). naprawić to zmieniłem rozwiązanie na$('<textarea/>').html(text).html() Sasha
Co jeśli tekst jest"><img src=x onerror=prompt(1)>? viky
nie używaj$('<div/>') - Nie mogę zrobić ataku XSS. Posługiwać się$('<textarea/>'); trijin
To bardzo zły pomysł, ponieważ pozwala na wstrzykiwanie HTML. na przykład jeśli w przychodzącym tekście masz coś takiego:<script>alert(code injection')</script> wyświetli alert na ekranie użytkownika. Josh
Nie jestem pewien, czy to również jest właściwe (używam jQuery 2.x):$.parseHTML(text)[0].textContent; Ricky
3

Myślę, że tego szukasz?

$('#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();

Powiązane pytania