2014-06-19 135 views
4

我有一个关于google代码管理器代码段定位的常见问题。根据谷歌的实施指南,标签管理器应该在正文标签启动后立即执行。我的问题如下:Google跟踪代码管理器定位

  • 跟踪应该加载到头部的脚本会发生什么?
  • 跟踪应在身体末尾加载的脚本会发生什么情况?

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

我能有2个集装箱?一个在头部和一个在身体的开始?

回答

2

有可能有两个标签管理器标签,但这不会做你想要的(并可能导致问题)。 GTM应该直接放在开头主体标签之后,而不是放在另一个元素之内的原因是,GTM会执行一些DOM操作来插入包含的标签。所有你配置好的标签都被打包成一个JavaScript对象,它被插入你的页面并从那里发射。将GTM标签放入其他位置不会改变插入标签的位置(除非用户禁用了javascript,否则图像标签将显示在iframe中)。然而,这意味着GTM标签可能会失败,因为注入JavaScript的DOM操作可能无法从指定的位置运行(特别是如果将它放在主体外部)。

实际上Google说Tag Manager不适用于改变页面外观的标签(例如A/B测试工具,自GTM第一次发布以来就是listed as "coming soon")。

+0

有人downvoted和我后推测这是因为这个答案在某些方面不再准确;现在GTM Snippet的建议是将其纳入考虑范围,并且正式支持多个容器。但就问题而言,它仍然是正确的,您不能将两部分片段放在不同的容器中,并使用该技术同步执行依赖于特定顺序的标签。 –

0

随着时间的推移,这已经发生了变化,现在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 --> 

<body>标签

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