结合Google Analytics(gtag.js)和Google跟踪代码管理器(gtm.js)

tim*_*tim 8 javascript jquery google-analytics google-tag-manager

使用Google跟踪代码管理器将Google Analytics新迁移到"全球网站代码"会让我感到困惑.它是标签管理器,但它不是!?

常规Google跟踪代码管理器集成如下所示:

<!-- Google Tag Manager -->
<script>
  (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  })(window,document,'script','dataLayer','GTM-XXXXXXX');
</script>
Run Code Online (Sandbox Code Playgroud)

谷歌Analytics(分析)全球网站标签一体化是这样的:

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

他们加载不同的资源.但两者都启动了dataLayer push方法.创建对象的方式不同(假设两种方式可以互换).我们是否应该并排使用两个集成,尽管一个实现中的dataLayer对象与另一个实现冲突?

在旁注.这两个资源都与jQuery 1.9.1捆绑在一起.虽然加载和实例化jQuery两次不是最佳的,(如果我们在此基础上有自己的jQuery,则三次).有没有变通办法或建议?

dfe*_*enc 5

gtag.js开发人员指南

如果您已经在使用标签管理器,则应该继续使用。如果您不需要标签管理系统,可以使用每种产品提供的gtag.js跟踪代码。

跟踪代码管理器和gtag.js建立在相同的基础架构上,如果部署在同一页面上,则应该可以正常运行。

全球网站标签gtag.js)是一个新的方式使用 analytics.js与其他谷歌产品如AdWords或DoubleClick在一起。
实际上,根据您配置的服务,gtag.js加载analytics.js与其他库相同的旧库。如果您使用的AdWords帐户配置它gtag('config', 'AW-XXXXXXXX-X');,该脚本也会自动加载conversions.js。此外,gtag.js还对服务进行了一些基本的初始化,例如触发Google Analytics(分析)的综合浏览量或AdWords的再营销。

话虽如此,它确实有点像标签管理器。但是,它仅适用于Google产品。因此,通过将所有Google标签包装到一个标签中,可以简化各种Google标签的配置。

请务必注意,如果您要设置新的Google Analytics(分析)帐户,则会获得“全球网站代码”格式的跟踪代码!你没有选择。

另一方面,与大多数标签管理系统一样,Google跟踪代码管理器可让您管理Google产品套件以外的代码。它带有一个用户界面,版本控制,访问管理和所有其他奇特的东西。就像analytics.js过去一样,gtag.js只是Tag Manager可以与之通信的另一个JavaScript库。

  • `gtag.js` 的主要目的之一肯定是用多个谷歌产品配置它,就像这里提到的:https://developers.google.com/gtagjs/devguide/add。`Array.push()` 方法不会清除数组,而是将新值附加到数组的末尾,因此之前推送的配置不会被覆盖。 (2认同)