Раздел Javascript CDATA

Недавно я создавал модуль для добавления тега ремаркетинга Google в интернет-магазин. Я подготовил google_tag_params для разных типов страниц (продукт, категория, корзина и т. д.) в соответствии с документацией. Все шло хорошо, пока клиент не проверил страницу с надстройкой Google Tag Assistant для Chrome. Он показывает предупреждение для раздела CDATA. Сначала я не понял, о чем он говорит, так как параметры были в порядке, и я не получил никаких ошибок в консоли. Поэтому я проверил Google Tag Assistant и, к моему удивлению, он действует следующим образом.

Для кода:

<script type="text/javascript">
//<![CDATA[
var google_conversion_id = <?php echo $this->getConversionId();?>;
var google_conversion_label = '<?php echo $this->getConversionLabel();?>';
var google_custom_params = window.google_tag_params;
var google_remarketing_only = <?php echo $this->getRemarketingOnlyFlag();?>;
//]]> 
</script>

Он показывает предупреждение «Отсутствуют комментарии CDATA» и указывает на документацию https://support.google.com/tagassistant/answer/2978937?ref_topic=2947092#cdata_comments

Но изменив это на

<script type="text/javascript">
/*<![CDATA[*/
var google_conversion_id = <?php echo $this->getConversionId();?>;
var google_conversion_label = '<?php echo $this->getConversionLabel();?>';
var google_custom_params = window.google_tag_params;
var google_remarketing_only = <?php echo $this->getRemarketingOnlyFlag();?>;
/*]]> */
</script>

Заставляет предупреждение исчезнуть.

Итак, мой вопрос заключается в следующем. Есть ли разница между однострочным комментарием и многострочным комментарием в любом браузере? Это только странное поведение Google Tag Assistant, которое не распознает эти комментарии?


person Zefiryn    schedule 05.11.2013    source источник


Ответы (2)


Нет, нет никакой разницы. Google Tag Assistent просто не распознает комментарии, заканчивающиеся разрывом строки.

person Janus Troelsen    schedule 05.11.2013

Некоторые минификаторы html могут иметь проблемы во время минификации.

Например

<script type="text/javascript">
//<![CDATA[
    alert("Hello World");
//]]> 
</script>

стали

<script type="text/javascript">//<![CDATA[alert("Hello World");//]]></script>

Так что /*<![CDATA[*/ чуть безопаснее.

person Luca Rainone    schedule 05.11.2013