Подтвердить что ты не робот

Должен ли я использовать <! [CDATA [...]]> в HTML5?

Я уверен, что разделы <![CDATA[...]]> могут использоваться в XHTML5, но как насчет HTML5?

4b9b3361

Ответ 1

Структура CDATA на самом деле не для HTML, это для XML.

Люди иногда используют их в HTML внутри тегов script, потому что они устраняют необходимость их удаления определенных специальных символов. Это отнюдь не требование, хотя (для HTML 4 или 5).

Изменить:. Здесь мы открываем, что на самом деле размытая старая червь из червей с 2002 года, отправляете ли вы XHTML как text/html или как application/xhtml+xml, как будто вы "предположили": )

Ответ 2

С той же страницы @pst, связанной с:

Элемент-специфический синтаксический анализ для тегов script и style, Руководство по совместимости с XHTML-HTML: "Следующий код с экранированием может гарантировать, что script и элементы стиля будут работать как в XHTML, так и в HTML, включая старые браузеры."

Максимальная обратная совместимость:

<script type="text/javascript"><!--//--><![CDATA[//><!--
    ...
//--><!]]></script>

Упрощенная версия, вроде несовместимой с "гораздо более старыми браузерами":

<script>//<![CDATA[
   ...
//]]></script>

Итак, CDATA может использоваться в HTML5 и рекомендуется в Руководстве для совместимости с XHTML-HTML. Это полезно для страниц polyglot HTML/XML/XHTML, которые создаются и анализируются как XML во время разработки, но служат как HTML5 для лучшего кросс-браузера совместимость. Страницы Polyglot имеют свои преимущества, и я сам использовал это, так как гораздо проще отлаживать XML/XHTML5. Например, Google Chrome выдает ошибку для недопустимого XML/XHTML5 (включая, например, escape-символ символа), тогда как та же страница служила HTML5 будет "просто работать", иначе "возможно, работает".

Ответ 3

Спекуляция, похоже, устраняет эту проблему. script и теги стиля считаются "исходными текстовыми элементами". CDATA не нужен или не разрешен для них. CDATA используется только с "внешним контентом", то есть MathML и SVG. Обратите внимание, что есть некоторые ограничения на то, что может быть в теге script - в основном вы не можете поместить там что-то вроде var x = '</script>', потому что он закроет тег и должен быть разбит, как указано в ответе pst. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions

Ответ 4

Возможно, посмотрите: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

<! [CDATA [...]] > является фальшивым комментарием.

В HTML, <script> уже защищен - вот почему иногда он должен быть записан как a = "<" + "/script>", чтобы избежать путаницы с браузером. Обратите внимание, что код действителен вне CDATA в HTML.