Ймовірно, вам не потрібна така функція. Оскільки ваш код уже знаходиться в браузері *, ви можете отримати доступ до DOM безпосередньо, а не генерувати та кодувати HTML, який доведеться декодувати назад браузером, щоб він фактично використовувався.
Використовуйте innerText
властивість, щоб вставити звичайний текст у DOM безпечно та набагато швидше, ніж будь-яка із представлених функцій евакуації. Навіть швидше, ніж призначати статичну попередньо закодовану рядок innerHTML
.
Використовуйте classList
для редагування класів, dataset
для встановлення data-
атрибутів та setAttribute
інших.
Все це допоможе вам врятуватись. Точніше, не потрібно виконувати жодних епізодів, а під ними не виконуватись кодування **, оскільки ви працюєте навколо HTML, текстового представлення 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>
* Ця відповідь не призначена для користувачів сервера JavaScript (Node.js тощо )
** Якщо ви явно не перетворите його згодом у фактичний HTML. Наприклад, отримавши доступ innerHTML
- ось що відбувається, коли ви запускаєте $('<div/>').text(value).html();
запропоновані в інших відповідях. Отже, якщо ваша кінцева мета - вставити деякі дані в документ, зробивши це таким чином, ви будете виконувати роботу двічі. Також ви бачите, що в отриманому HTML кодується не все, лише мінімум, необхідний для того, щоб він був дійсним. Це робиться залежно від контексту, тому цей метод jQuery не кодує котирування, а тому не повинен використовуватися як загальнозміцнювач. Уникнення котирувань потрібно, коли ви створюєте HTML у вигляді рядка з недовіреними або містять цитати даними на місці значення атрибута. Якщо ви використовуєте API DOM, вам взагалі не потрібно дбати про втечу.