Ich weiß, es gibt Bibliotheken gibt, aber hier sind ein paar Lösungen für Browser. Diese funktionieren gut, wenn Sie html-Entity-Datenstrings in editierbare Bereiche einfügen, in denen die Zeichen angezeigt werden sollen, z. B. Textarea oder Eingabe [type = text].
Ich füge diese Antwort hinzu, wie ich ältere Versionen von IE unterstützen muss, und ich fühle, dass es ein paar Tage im Wert von Forschung und Prüfung schließt. Ich hoffe, dass jemand das nützlich findet.
Zuerst ist dies für modernere Browser mit jQuery, Bitte beachten Sie, dass dies nicht verwendet werden sollte, wenn Sie Versionen von IE vor 10 (7, 8, oder 9) unterstützen müssen, da es die Zeilenenden streichen wird nur eine lange Textzeile.
if (!String.prototype.HTMLDecode) {
String.prototype.HTMLDecode = function() {
var str = this.toString(),
$decoderEl = $('<textarea />');
str = $decoderEl.html(str)
.text()
.replace(/<br((\/)|(\/))?>/gi, "\r\n");
$decoderEl.remove();
return str;
};
}
Das nächste ist oben auf kennebec Arbeit basiert, mit einigen Unterschieden, die meist aus Gründen der älteren IE-Versionen sind. Dies erfordert keine jQuery, erfordert aber immer noch einen Browser.
if (!String.prototype.HTMLDecode) {
String.prototype.HTMLDecode = function() {
var str = this.toString(),
//Create an element for decoding
decoderEl = document.createElement('p');
//Bail if empty, otherwise IE7 will return undefined when
//OR-ing the 2 empty strings from innerText and textContent
if (str.length == 0) {
return str;
}
//convert newlines to <br's> to save them
str = str.replace(/((\r\n)|(\r)|(\n))/gi, " <br/>");
decoderEl.innerHTML = str;
/*
We use innerText first as IE strips newlines out with textContent.
There is said to be a performance hit for this, but sometimes
correctness of data (keeping newlines) must take precedence.
*/
str = decoderEl.innerText || decoderEl.textContent;
//clean up the decoding element
decoderEl = null;
//replace back in the newlines
return str.replace(/<br((\/)|(\/))?>/gi, "\r\n");
};
}
/*
Usage:
var str = ">";
return str.HTMLDecode();
returned value:
(String) >
*/
Wenn Sie dies benötigen, gibt es eine gewisse Wahrscheinlichkeit, dass Sie das Problem falsch lösen. – AndreKR
Was ist der Grund dafür, dies nicht zu tun? – nuaavee
Dies wird in einem Fall benötigt, in dem Sie Daten haben, die für die Anzeige HTML-freundlich sein müssen, aber in einer Textdatei gespeichert und von einem Benutzer heruntergeladen werden können. In diesem Fall ist es wirklich notwendig, weil die Benutzer normalerweise nicht einmal wissen, dass es sich um eine Charakterentität handelt, ganz gleich, um welche es sich handelt. – ArtlyticalMedia