谷歌标签管理器定位

Posted

技术标签:

【中文标题】谷歌标签管理器定位【英文标题】:Google Tag Manager Positioning 【发布时间】:2014-08-09 17:36:51 【问题描述】:

我有一个关于谷歌标签管理器 sn-p 定位的一般性问题。根据 google 的实施指南,标签管理器应在 body-tag 启动后立即实施。我的问题如下:

应该在头部加载的跟踪脚本会发生什么情况? 应该在正文末尾加载的跟踪脚本会发生什么情况?

例如VWO(视觉网站优化器)建议将代码加载到头部以避免闪烁...

我可以有 2 个容器吗?一个在头部的末端,一个在身体的开头?

【问题讨论】:

【参考方案1】:

可以有两个标签管理器标签,但这不能满足您的要求(并且可能会导致问题)。 GTM 应该直接放在开始正文标签之后而不是在另一个元素内的原因是 GTM 做了一些 DOM 操作来插入包含的标签。您配置的所有标签都打包到一个 javascript 对象中,该对象插入您的页面并从那里触发。将 GTM 标记放到另一个位置不会改变插入标记的位置(除非用户禁用了 javascript,在这种情况下图像标记将显示在 iframe 中)。然而,这意味着 GTM 标记可能会失败,因为注入 javascript 的 DOM 操作可能无法从指定位置以外的其他位置工作(尤其是如果您将其放在正文之外)。

实际上,Google 表示,出于这个原因,跟踪代码管理器不适合用于改变页面外观的标签(例如 A/B 测试工具,自 GTM 首次发布以来就是 listed as "coming soon")。

【讨论】:

有人投了反对票,我想这是因为这个答案在某些方面不再准确;现在对 GTM Snippet 的建议是将其包含在 head 中,并且正式支持多个容器。但就问题而言,它仍然是正确的,您不能将两部分的 sn-ps 放在不同的容器中并使用该技术同步执行依赖于特定顺序的标签。【参考方案2】:

随着时间的推移,这种情况发生了变化,现在 GTM 集成了 A/B 测试工具,例如 Google 的 Optimize。

为此,您需要添加两段代码: 在<header> 标签之后:

    <!-- 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-CONTAINER_ID');</script>
<!-- End Google Tag Manager -->

就在&lt;body&gt; 标签之后

<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-CONTAINTER_ID"
  style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

【讨论】:

以上是关于谷歌标签管理器定位的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地测试谷歌标签管理器

谷歌标签管理器和谷歌分析有啥区别?

谷歌标签管理器中的adwords转换代码

找不到谷歌标签管理器容器ios swift

谷歌标签管理器在 wordpress 网站上导致 javascript 错误

单击按钮类时返回p类的innerhtml自定义javascript谷歌标签管理器