Javascript CDATA部分

时间:2013-11-05 07:27:50

标签: javascript cdata google-tag-manager

最近,我正在创建一个模块,将google再营销代码添加到网上商店。我根据文档为不同类型的页面(产品,类别,购物车等)准备了google_tag_params。一切顺利,直到客户使用Google Tag Assistant插件检查了Chrome页面。它显示CDATA部分的警告。起初我不明白他在说什么,因为参数很好,我没有在控制台中收到任何错误。所以我检查了Google Tag助手,令我惊讶的是它的行为如下。

代码:

<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>

使警告消失。

所以我的问题是这个。在任何浏览器中,在线注释和多行注释之间是否有任何区别?这只是谷歌标签助手奇怪的行为,不承认这些评论?

2 个答案:

答案 0 :(得分:6)

某些html minifiers在缩小时可能会出现问题。

例如

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

成为

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

所以/*<![CDATA[*/更安全一点。

答案 1 :(得分:2)

不,没有区别。 Google Tag Assistant根本无法识别换行终止的评论。