Традиционный побег
Если вы используете XHTML, вам нужно использовать раздел CDATA
.Вы также можете использовать их в HTML, но HTML не такой строгий.
Я разделил строковые константы, чтобы этот код работал внутри XHTML внутри блоков CDATA.Если вы используете свой JavaScript как отдельные файлы, вам не нужно беспокоиться об этом.Обратите внимание, что если вы используете XHTML со встроенным JavaScript, то вам нужно , чтобы заключить код в блок CDATA, или что-то из этого не будет работать.Вы столкнетесь с странными, тонкими ошибками.
function htmlentities(text) {
var escaped = text.replace(/\]\]>/g, ']]' + '>]]><' + '![CDATA[');
return '<' + '![CDATA[' + escaped + ']]' + '>';
}
Текстовый узел DOM
«Правильный» способ экранирования текста - использовать функцию DOM document.createTextNode
.Это на самом деле не экранирует текст;он просто говорит браузеру создать текстовый элемент, который по своей сути не разбирается.Однако вы должны быть готовы использовать DOM для того, чтобы этот метод работал: то есть у вас есть такие методы, как appendChild
, в отличие от свойства innerHTML
и аналогичных.Это заполнит элемент с идентификатором an-element
текстом, который не будет анализироваться как (X) HTML:
var textNode = document.createTextNode("<strong>This won't be bold. The tags " +
"will be visible.</strong>");
document.getElementById('an-element').appendChild(textNode);
jQuery DOM Wrapper
jQuery предоставляет удобную оболочку для createTextNode
названный text
.Это довольно удобно.Вот та же функциональность с использованием jQuery:
$('#an-element').text("<strong>This won't be bold. The tags will be " +
"visible.</strong>");