远程脚本之前或之后的dataLayer:Google Analytics(分析)与TagManager的区别

时间:2019-07-11 11:24:28

标签: javascript google-analytics google-tag-manager

Google Analytics documentation建议在远程代码脚本标记之后/下方填充window.dataLayer

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'GA_MEASUREMENT_ID');
</script>

但是,Google Tag Manager documentation提出了另一种建议,其中window.dataLayer填充在远程代码脚本标记之前/上方

<script>
  dataLayer = [{
    'pageCategory': 'signup',
    'visitorType': 'high-value'
  }];
</script>
<!-- Google Tag Manager -->
...
<!-- End Google Tag Manager -->

为什么有区别?

Google Analytics(分析)代码似乎特别奇怪,似乎可以处理远程脚本上的async属性,这意味着它可以在填充dataLayer之前或之后运行。为什么不以与标记管理器相同的方式填充dataLayer

1 个答案:

答案 0 :(得分:2)

第二个示例显示了如何在加载GTM之前填充dataLayer

第一个示例假定您将从一个空的dataLayer数组开始。这行window.dataLayer = window.dataLayer || [];正在检查您是否已填充dataLayer,如果已填充,请使用它。

加载GTM后,您可以使用dataLayer.push({...})添加更多事件