Когда и зачём нужен блок CDATA между тегами скрипта?

JavaScript, Вопросы и ответы
23 февраля 2012

Вопрос

Другими словами, где и когда использовать это:

<script type="text/javascript">
//<![CDATA[
    // код
//]]>
</script>

Вместо того, чтобы просто написать:

<script type="text/javascript">
    // код
</script>

?


Ответ №1

Блок CDATA необходим при использовании HTML и XHTML, чтобы указать парсеру, что не надо анализировать то, что находится внутри этого блока. Если не задать эти метки, парсер может воспринять JavaScript-код как XML-данные и посчитать код невалидным и остановить анализ документа. Комментарии перед CDATA ставятся, чтобы не нарушить структуру JavaScript.

Давайте перейдём к примерам. При подключении скриптов в HTML следующий код может вызвать конфликт:

<script>
var x = '</script>';
alert(x)
</script>

Как видите, здесь закрывающий тег script используется внутри переменной, что может быть некорректно воспринято парсером.

В XHTML разметке тег script вообще не считается чем-то особенным, он такой же, как и другие теги, в некоторых случаях он даже может содержать дочерние ноды между символами < и >. Поэтому следующий код будет невалидным:

<script>
if (a<b && c<d) {
    alert('Hello!');
}
</script>

Короче. Если в Вашем JavaScript используются символы & и <, то блок CDATA использовать обязательно. Если нет - можете его опустить.

Для скриптов, которые подключаются через внешние файлы, использовать данный блок нет необходимости.

7 комментария

  • pElenast:

    Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

    Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

    Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

    Вам достаточно просто зарегистрироваться на нашем сервисе. > http://www.oplata-vklike.tk <

    Вывод заработанных средств ежедневно в течении нескольких минут.

  • sElenast:

    Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

    Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

    Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

    достаточно просто зарегистрироваться на нашем сервисе. > http://www.oplata-vklike.tk <

    Вывод заработанных средств ежедневно в течении нескольких минут.

  • wElenast:

    Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

    Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

    Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

    достаточно просто зарегистрироваться на нашем сервисе. > http://oplata-vklike.tk/ <

    Вывод заработанных средств ежедневно в течении нескольких минут.

  • lElenast:

    Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

    Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

    Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

    Вам достаточно просто зарегистрироваться на нашем сервисе. > http://www.oplata-vklike.tk <

    Вывод заработанных средств ежедневно в течении нескольких минут.

  • nElenast:

    Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

    Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

    Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

    Вам достаточно просто зарегистрироваться на нашем сервисе. > http://oplata-vklike.tk/ <

    Вывод заработанных средств ежедневно в течении нескольких минут.

  • DeweyRaf:

    If you have a desire to learn how to earn from $ 500 per day and work only for yourself, then write to us at email: admin@makemoneyonline.universalxyzdom.xyz

  • AntonioUnalk:

    Открылся новый магазин все по 50 рублей, например определенный товар стоит 5000 рублей или 7000 рублей то у нас вы можете найти его всего за 50 рублей: http://shop-50-rubley.xyz
    магазин ежедневно пополняется, к концу недели будет очень богатый ассортимент.

Добавить комментарий


(обязательно)