Prawdopodobnie nie potrzebujesz takiej funkcji. Ponieważ Twój kod znajduje się już w przeglądarce *, możesz uzyskać bezpośredni dostęp do DOM zamiast generować i kodować HTML, który będzie musiał zostać zdekodowany wstecz przez przeglądarkę, aby faktycznie był używany.
Użyj innerText
właściwości, aby bezpiecznie i znacznie szybciej wstawić zwykły tekst do DOM, niż przy użyciu którejkolwiek z przedstawionych funkcji ucieczki. Nawet szybciej niż przypisanie statycznego wstępnie zakodowanego ciągu doinnerHTML
.
Służy classList
do edycji klas, dataset
ustawiania data-
atrybutów isetAttribute
innych.
Wszystkie te poradzą sobie z ucieczką za Ciebie. Mówiąc dokładniej, nie ma potrzeby ucieczki i żadne kodowanie nie będzie wykonywane pod spodem **, ponieważ pracujesz nad HTML, tekstową reprezentacją DOM.
// 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>
* Ta odpowiedź nie jest przeznaczona dla użytkowników JavaScript po stronie serwera (Node.js itp. )
** Chyba że później wyraźnie przekonwertujesz go na rzeczywisty HTML. Np. Poprzez dostęp innerHTML
- tak się dzieje, gdy uruchamiasz $('<div/>').text(value).html();
sugerowane w innych odpowiedziach. Więc jeśli Twoim ostatecznym celem jest wstawienie pewnych danych do dokumentu, robiąc to w ten sposób, wykonasz tę pracę dwukrotnie. Możesz również zobaczyć, że w wynikowym HTML nie wszystko jest zakodowane, a jedynie minimum potrzebne do poprawności. Odbywa się to w zależności od kontekstu, dlatego ta metoda jQuery nie koduje cudzysłowów i dlatego nie powinna być używana jako eskaper ogólnego przeznaczenia. Znakowanie cudzysłowami jest potrzebne, gdy konstruujesz kod HTML jako ciąg znaków z niezaufanymi lub zawierającymi cytaty danymi w miejscu wartości atrybutu. Jeśli używasz DOM API, nie musisz w ogóle martwić się ucieczką.