Google Tag Manager 的延迟属性

4
我想为GTM标签设置defer属性,它可以很好地工作。但是,我的GTM包含另外10个脚本。j.defer = true不会影响这些脚本。我该如何将这些脚本的属性更改为defer而不是async?(可以参考此图片GTM脚本
<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.defer = true;
        j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
        f.parentNode.insertBefore(j, f);
    })(window, document, 'script', 'dataLayer', 'XXX-XXXXXXX');
</script>

1
我可能在这里忽略了一些显而易见的东西,但是通过推迟加载/执行GTM,这难道不会间接地推迟通过GTM加载的所有其他标签吗?(假设在将这些脚本添加到网站时页面已经加载) - Jean Costa
1个回答

3
GTM通过用户定义的标签逻辑添加脚本。您应该访问自己的GTM帐户,找到加载脚本的标签,并对它们进行完全相同的操作。
另一方面,除非您的GTM容器包含大量的逻辑,否则defer与async在任何可衡量的方式上都不会有所不同,但它可能会损害GTM收集的数据。
举个例子,如果页面加载时间较长,用户不想等待并退出,则由于GTM被延迟,您将无法了解到那些弹回的用户。我相信在使用数据层或者GTM依赖于在页面完成加载之前触发的其他事件监听器的情况下,还有更多边缘情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接