Это архаичная путаница, предназначенная для поддержки браузеров HTML 2.0 более 15 с лишним лет назад. Эти браузеры не знали о тегах <script>
и <style>
, поэтому, если содержимое внутри них не было спрятано внутри разметки комментариев, оно выплевывало бы их на страницу в виде текстового содержимого, вызывая неприятный беспорядок.
Сегодня у этой практики нет абсолютно никакой цели, но она все еще держится благодаря кодированию и вставке и плохим инструментам авторинга, таким как Dreamweaver.
В XHTML, который используется в качестве XML, вы не должны включать разметку комментария, в противном случае ваш скрипт или таблица стилей действительно будут только комментарием и будут полностью проигнорированы.
Некоторые авторы используют раздел <![CDATA[ ... ]]>
для скриптов и таблиц стилей в XHTML, но это по совершенно другой причине. Он позволяет вам включать буквальный символ <
или &
внутри содержимого без необходимости выполнять правильные действия с XML и экранировать его до <
или &
. Помимо усложнения чтения кода, HTML-переход в сценариях и стилях может сбить с толку устаревшие не-XML-анализаторы HTML: в HTML4 элементы script и style являются магическими и могут содержать эти символы без экранирования (единственная последовательность, которую вы можете ' t используется </
, так как это завершает элемент).
Когда вы используете раздел CDATA в документе, который вы собираетесь читать не HTML-парсерами HTML, вы должны использовать комментарий CSS или JavaScript, чтобы скрыть разметку раздела CDATA:
<script type="text/javascript">//<![CDATA[
...
//]]></script>
<style type="text/css">/* <![CDATA[ */
...
/* ]]> */</style>
Для старой школы, распространяющей комментарии в HTML 3.2, было сделано исключение для разбора CSS и JS, чтобы позволить <!--
и -->
последовательностям проскользнуть незамеченным, но это не так для <![CDATA[
или ]]>
, который будет рассматриваться синтаксическим анализатором CSS или JavaScript как синтаксическая ошибка.
Если, боже упаси, вам нужно поддерживать HTML 2.0, 3.2+ и XHTML-парсеры, вам может понадобиться этот отвратительный беспорядок:
<script type="text/javascript"><!--//--><![CDATA[//><!--
...
//--><!]]></script>
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
...
/*]]>*/--></style>
к счастью, этого никогда не случится.
Обычно вы можете обойтись без комментариев или CDATA, так как CSS почти никогда не нужно использовать символы <
или &
, а в JavaScript вы обычно можете превратить менее чем сравнения в безвредные >
и логические и к инвертированным логическим или. И CSS, и JavaScript предлагают собственные экранированные символы, когда вы хотите поместить символ <
или &
в строковый литерал (например, '\x3C'
).
В любом случае, значительное количество стиля и сценарий - где вы, скорее всего, хотят использовать эти символы -. Как правило, должно быть во внешнем связанном файле, что делает точку спорным