Javascript 谷歌标签管理器-如何在页脚脚本?

Javascript 谷歌标签管理器-如何在页脚脚本?,javascript,performance,asynchronous,loading,google-tag-manager,Javascript,Performance,Asynchronous,Loading,Google Tag Manager,在我们的网站上,我们在页脚的结束正文标记之前有第三方服务的脚本标记,如Lotame、Peer39和Google Analytics,以避免阻止页面呈现。我们尽可能使脚本延迟或异步,但有些服务不能与异步加载一起工作,必须保留为普通标记。我们还向我们的其他分析服务发送了一组关于每个页面内容的数据,这意味着我们也选择将这些数据包含在页脚中 我们现在正在考虑使用来为我们包含外部脚本。为了实现GTM,Google建议您放置他们的代码块 <!-- Google Tag Manager --> &

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

我们现在正在考虑使用来为我们包含外部脚本。为了实现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 -->

(功能(w、d、s、l、i){
w[l]=w[l]| |[];
w[l]。推({
“gtm.start”:新日期().getTime(),事件:“gtm.js”
});
var f=d.getElementsByTagName[0],
j=d.createElement,dl=l!=“数据层”?“&l=”+l:“”;
j、 异步=真;
j、 src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;
f、 parentNode.insertBefore(j,f);
})(窗口、文档、“脚本”、“数据层”、“GTM-XXXXXX”);
就在开始的body标签之后。这将是GTM开始请求标签的点。我理解建议使用此职位是为了避免IE6和IE7出现问题

GTM没有提供任何方法来指定脚本的加载顺序。我担心的是,如果我遵循这个建议,我将把对一些同步脚本文件的请求从页脚移到页眉,因为它们安全地避开了主要内容


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

如果您的第三方服务必须是同步的,那么最好将它们从Google Tag Manager中删除(来源:);这很好。通常情况下,在网站测试工具中,您实际需要在页面呈现之前加载内容,否则会看到闪烁

此外,GTM确实提供了一个优先顺序,确定何时应该触发标签-请参阅


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

您也可以在加载DOM或页面完全加载时触发GTM标记,这一条件非常接近于将标记置于
标记之前


在第一种情况下,创建一个新触发器
页面视图>DOM就绪
,在第二种情况下,创建
页面视图>窗口加载

仅对GTM的位置进行注释:如果您将GTM放置在页面的更下方,然后,如果用户在GTM有机会加载之前触发这些交互,则更有可能错过本应通过GTM跟踪的交互。此外,如果用户进入该网站,然后在GTM加载之前快速导航到另一个页面,那么您可能会完全错过页面浏览。好的,谢谢nyuen,这是有道理的。如果用户点击太快以至于GTM错过了交互,那么我宁愿为我的用户提供更快的体验,也可能错过一些营销数据。非常感谢Blexy,这就是答案!