Что такое использование CDATA внутри тегов JavaScript и HTML?
<script type="text/javascript">
// <![CDATA[
// ]]>
</script>
Что такое использование CDATA внутри тегов JavaScript и HTML?
<script type="text/javascript">
// <![CDATA[
// ]]>
</script>
Весь текст в XML-документе будет проанализирован синтаксическим анализатором.
Но текст внутри секции CDATA будет игнорироваться синтаксическим анализатором.
Данные о символах CDATA - (Unparsed)
Термин CDATA используется для текстовых данных, которые не должны анализироваться парсером XML.
Такие символы, как "<" и "&" являются незаконными в элементах XML.
"<" будет генерировать ошибку, потому что синтаксический анализатор интерпретирует ее как начало нового элемента.
"&" будет генерировать ошибку, потому что синтаксический анализатор интерпретирует ее как начало символьной сущности.
Некоторые тексты, такие как код JavaScript, содержат много "<" или "&" персонажи. Чтобы избежать ошибок script, код может быть определен как CDATA.
Все внутри секции CDATA игнорируется парсером.
Раздел CDATA начинается с "
<![CDATA[
" и заканчивается на "]]>
"
Использование CDATA в выводе программы
Разделы CDATA в документах XHTML могут анализироваться по-разному веб-браузерами, если они отображают документ как HTML, поскольку парсеры HTML не распознают маркеры начала и конца CDATA и не распознают ссылки на объекты HTML, такие как
<
в тегах<script>
. Это может привести к проблемам с рендерингом в веб-браузерах и может привести к уязвимости межсайтового скриптинга, если они используются для отображения данных из ненадежных источников, поскольку два вида парсеров не согласятся с тем, где заканчивается раздел CDATA.
Также см. запись Wikipedia на CDATA.
CDATA
не имеет никакого значения в HTML.
CDATA
представляет собой XML-конструкцию, которая устанавливает содержимое тега, которое обычно представляет собой текстовые данные, обработанные с помощью #PCDATA, вместо этого принимается как #CDATA, то есть неперечисленные символьные данные. Это актуально и актуально только в XHTML.
Используется в тегах script
, чтобы избежать синтаксического анализа <
и &
. В HTML это не нужно, потому что в HTML script
уже #CDATA.
Из http://en.wikipedia.org/wiki/CDATA:
Так как полезно иметь возможность использовать меньше знаков (<) и амперсанды (&) в сценариях веб-страниц и в меньшей степени стили, без необходимости помнить, чтобы избежать их, обычно используется CDATA маркеры вокруг текста строки и элементов в Документы XHTML. Но так, что документ также может быть проанализирован с помощью HTML синтаксические анализаторы, которые не распознают маркеры CDATA, маркеры CDATA обычно закомментированы, как в этом примере JavaScript:
<script type="text/javascript">
//<![CDATA[
document.write("<");
//]]>
</script>
CDATA Устаревший.
Поэтому не используйте его в HTML 5.
https://developer.mozilla.org/en-US/docs/Web/API/CDATASection
CDATA представляет собой последовательность символов из набора символов документа и может включать в себя объекты символов. Пользовательские агенты должны интерпретировать значения атрибутов следующим образом: Замените объекты символов символами,
Игнорировать строки,
Замените каждый возврат каретки или вкладку одним пробелом.
Способ записи общего подмножества HTML и XHTML в надежде на большую переносимость.
В HTML, <script>
- это магия, которая вытесняет все, пока не появится </script>
.
Итак, вы можете написать:
<script>x = '<br/>';
и <br/>
не будут считаться тегом.
Вот почему строки, такие как:
x = '</scripts>'
должен быть экранирован как:
x = '</scr' + 'pts>'
Смотрите: Зачем расколоть <script> тег при записи его с помощью document.write()?
Но XML (и, следовательно, XHTML, являющийся "подмножеством" XML, в отличие от HTML), не обладает этой магией: <br/>
будет видно как тег.
<![CDATA[
- это способ XHTML:
не анализируйте теги до следующего
]]>
, рассмотрите все строки
Добавлен //
, чтобы CDATA хорошо работал и в HTML.
В HTML <![CDATA[
не магия, поэтому он будет запускаться JavaScript. Поэтому //
используется для комментирования.
XHTML также видит //
, но будет наблюдать за ним как пустую строку комментария, которая не является проблемой:
//
Это сказало:
<!DOCTYPE html>
vs <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
script
Но это нарушает золотое правило Интернета:
не доверяйте третьим сторонам, или ваш продукт сломается