4 ответов:
The
CDATAструктура на самом деле не для HTML вообще, это для XML.люди иногда используют их в HTML внутри
scriptтеги, потому что это устраняет необходимость для них, чтобы избежать некоторых специальных символов. Это ни в коем случае не требование, хотя (для HTML 4 или 5).Edit: здесь мы открываем эту действительно заплесневелую старую банку червей с 2002 года, отправляете ли вы XHTML как
text/htmlилиapplication/xhtml+xmlкак вы "должны": -)
С той же страницы @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 для лучшей кросс-браузерной совместимости. Полиглот страницы имеет свои преимущества, и я использовал это сам, так как гораздо проще отлаживать XML/XHTML5. Google Chrome, для например, будет выдавать ошибку на недопустимый XML/XHTML5 (включая, например,символ побега), в то время как та же страница, что и HTML5, будет "просто работать", а также "вероятно, работать".
спецификация, кажется, проясняет эту проблему. теги скриптов и стилей считаются "необработанными текстовыми элементами"."CDATA не нужен или разрешен для них. CDATA используется только с "иностранным контентом" - т. е. MathML и SVG. Обратите внимание, что есть некоторые ограничения на то, что может идти в теге скрипта-в основном вы не можете поставить что-то вроде
var x = '</script>'там, потому что он закроет тег и должен быть разделен, как PST отметил в своем ответе. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions
возможно см.:http://wiki.whatwg.org/wiki/HTML_vs._XHTML
это фиктивный комментарий.
в HTML
<script>уже защищен - вот почему иногда его нужно писать какa = "<" + "/script>", чтобы не запутать браузер. Обратите внимание, что код действителен за пределами CDATA в HTML.
Comments