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

时间:2015-05-07 15:36:41

标签: javascript performance asynchronous loading google-tag-manager

在我们的网站上,我们在关闭正文标记之前的页脚中为第三方服务(如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代码块放在页脚中是否有意义,因为我的一些脚本当前位于标题中?

2 个答案:

答案 0 :(得分:4)

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

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

TLDR;将所有异步标记丢入GTM并保留同步标记。

答案 1 :(得分:2)

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

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