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>
而且 Google 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>
它们加载不同的资源。但是两者都会触发dataLayer的 push 方法。对象创建的方式不同(假设这两种方式可以互换)。虽然一个实现中的dataLayer对象与另一个实现冲突,但我们是否应该同时使用两个集成呢?
顺便说一下,这两个资源都包含 jQuery 1.9.1。虽然加载和实例化 jQuery 两次(或三次,如果我们在其上方有自己的jQuery)并不是最优解,但有没有什么解决方法或建议呢?