Должен ли я использовать <! [CDATA [...]]> в HTML5? - PullRequest
77 голосов
/ 21 июля 2010

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

Ответы [ 4 ]

56 голосов
/ 21 июля 2010

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

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

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

23 голосов
/ 13 июля 2012

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

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

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

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

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

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

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

14 голосов
/ 19 декабря 2010

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

5 голосов
/ 21 июля 2010

Возможно см .: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

* фиктивный комментарий.

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

...