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

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

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

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

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

【问题讨论】:

    标签: javascript tracking google-tag-manager


    【解决方案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"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 2015-07-28
      • 2015-12-29
      • 2018-03-24
      • 2020-10-30
      相关资源
      最近更新 更多