Google 跟踪代码管理器 - 页脚中的脚本怎么样?

Google Tag Manager - what about scripts in the footer?

在我们的网站上,我们在结束正文标记之前的页脚中为第三方服务(如 Lotame、Peer39 和 Google Analytics)提供了脚本标记,以避免阻止页面呈现。我们尽可能使脚本延迟或异步,但某些服务不适用于异步加载,必须保留为普通标签。我们还向我们的其他分析服务发送了一堆关于每个页面内容的数据,这意味着我们也选择将其包含在页脚中。

我们现在正在考虑使用 Google Tag Manager 为我们包含外部脚本。要实施 GTM,Google 建议您放置他们的代码块

<!-- Google Tag Manager -->
<noscript>
    <iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
            height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<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 =
            '//www.googletagmanager.com/gtm.js?id=' + i + dl;
        f.parentNode.insertBefore(j, f);
    })(window, document, 'script', 'dataLayer', 'GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

就在起始正文标签之后。这将是 GTM 开始请求标签的时间点。我了解建议使用此位置以避免 IE6 和 IE7 出现问题。

GTM 没有提供任何方式来指定脚本的加载顺序。我担心,如果我遵循这个建议,我会将对一些同步脚本文件的请求从页脚(它们安全地远离主要内容)移到页眉。

我是不是多虑了?创建第二个 GTM 容器来管理我的页脚脚本似乎太复杂了。如果我不支持 IE7,那么将 GTM 代码块放在页脚是否有意义,因为我的一些脚本当前位于页眉中?

如果您的第三方服务必须是同步的,那么最好将它们从 Google 跟踪代码管理器中删除(来源:Are there tags that Google Tag Manager does not support?);这可以。这通常是网站测试工具的情况,您实际上需要在页面呈现之前加载内容,否则您会看到闪烁。

此外,GTM 确实提供了标签何时应触发的优先顺序 - 请参阅 Can I prioritize how tags are fired

TLDR;将所有异步标签放入 GTM 并保留同步标签。

您还可以在加载 DOM 或页面完全加载时触发 GTM 标记,这种情况非常接近于将标记放在 </body> 标记之前。

在第一种情况下创建新触发器 Page View > DOM Ready,在第二种情况下创建 Page View > Window Loaded.