Скорее всего, вам не нужна такая функция. Поскольку ваш код уже находится в браузере *, вы можете напрямую обращаться к DOM, а не генерировать и кодировать HTML-код, который должен быть декодирован в обратном направлении браузером для фактического использования.
Используйте innerText
свойство для вставки простого текста в DOM безопасно и намного быстрее, чем с помощью любой из представленных escape-функций. Даже быстрее, чем присвоение статической предварительно кодированной строки 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 не кодирует кавычки и, следовательно, не должен использоваться в качестве escape-кода общего назначения. Экранирование кавычек необходимо, когда вы создаете HTML как строку с ненадежными или содержащими цитаты данными вместо значения атрибута. Если вы используете DOM API, вам вовсе не нужно заботиться о том, чтобы избежать этого.