Когда и зачём нужен блок 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 использовать обязательно. Если нет - можете его опустить.

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

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

  • 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
    магазин ежедневно пополняется, к концу недели будет очень богатый ассортимент.

  • BomosoogS:

    Будущей матери существенно знать, что предпочтение больницы нужно начинать с вопроса о плановой мойке. А цепочка анализов для беременных производят безвозмездно при предоставлении справки от врача. Полезная и важная информация позволит сэкономить на обследовании и родах.

    Не ожидайте, что в женской больнице все сообщат. Удивите гинеколога вопросом о способностях вашего районного перинатального центра. Эффективная беременность и роды – заслуга будущей мамы, которая представляет личные полномочия.
    роды в краснодаре

  • Здравствуйте! Вас интересуют клиентские базы данных? Ответ на Email: prodawez@mail.de:

    Здравствуйте! Вас интересуют клиентские базы данных? Ответ на Email: prodawez@mail.de

  • WilliamCramy:

    13 ways to lose weight:
    https://sites.google.com/site/weightlossluxury/system/app/pages/sitemap/hierarchy

    Food for Google:
    vitamin b50 weight loss
    glucerna weight loss shake
    what should i eat to lose weight fast
    how many calories to burn per day for weight loss
    at home body wrap for weight loss
    how to lose weight over 200 pounds
    benefits eating nuts weight loss
    not eating after workout weight loss
    best way to lose weight fast yahoo answers

Добавить комментарий для DeweyRaf Отменить ответ


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