Möglicherweise benötigen Sie eine solche Funktion nicht. Da sich Ihr Code bereits im Browser * befindet, können Sie direkt auf das DOM zugreifen, anstatt HTML zu generieren und zu codieren, das vom Browser rückwärts decodiert werden muss, um tatsächlich verwendet zu werden.
Verwenden Sie die innerText
Eigenschaft, um einfachen Text sicher und viel schneller in das DOM einzufügen als mit einer der vorgestellten Escape-Funktionen. Noch schneller als das Zuweisen einer statischen vorcodierten Zeichenfolge innerHTML
.
Verwenden Sie classList
zum Bearbeiten Klassen, dataset
um Satz data-
Attribute und setAttribute
für andere.
All dies erledigt die Flucht für Sie. Genauer gesagt ist kein Escapezeichen erforderlich und es wird keine Codierung unter ** durchgeführt, da Sie HTML, die Textdarstellung von DOM, umgehen.
// use existing element
var author = 'John "Superman" Doe <john@example.com>';
var el = document.getElementById('first');
el.dataset.author = author;
el.textContent = 'Author: '+author;
// or create a new element
var a = document.createElement('a');
a.classList.add('important');
a.href = '/search?q=term+"exact"&n=50';
a.textContent = 'Search for "exact" term';
document.body.appendChild(a);
// actual HTML code
console.log(el.outerHTML);
console.log(a.outerHTML);
.important { color: red; }
<div id="first"></div>
* Diese Antwort ist nicht für serverseitige JavaScript-Benutzer (Node.js usw. ) gedacht .
** Es sei denn, Sie konvertieren es anschließend explizit in tatsächliches HTML. ZB durch Zugriff innerHTML
- dies passiert, wenn Sie $('<div/>').text(value).html();
in anderen Antworten vorgeschlagen ausführen . Wenn Ihr letztes Ziel darin besteht, einige Daten in das Dokument einzufügen, erledigen Sie die Arbeit auf diese Weise zweimal. Sie können auch sehen, dass im resultierenden HTML-Code nicht alles codiert ist, sondern nur das Minimum, das erforderlich ist, damit es gültig ist. Dies erfolgt kontextabhängig. Aus diesem Grund codiert diese jQuery-Methode keine Anführungszeichen und sollte daher nicht als Allzweck-Escaper verwendet werden. Das Enthalten von Anführungszeichen ist erforderlich, wenn Sie HTML als Zeichenfolge mit nicht vertrauenswürdigen oder in Anführungszeichen enthaltenden Daten an der Stelle des Attributwerts erstellen. Wenn Sie die DOM-API verwenden, müssen Sie sich überhaupt nicht darum kümmern, zu entkommen.