我正在改善网上商店的性能并缩短其加载时间,并在其上使用了Google跟踪代码管理器。但是默认情况下,包含Google标记管理器的脚本也会加载Google Analytics(分析)(旧版ga.js)和通用Google Analytics(分析)(analytics.js)。我不需要两者,但是如果有必要,我只需要通用Google Analytics(分析)。

那么,为什么Google跟踪代码管理器同时包含两个脚本?

作为编码简历,这是标签管理器的内容:

<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-XXXX');</script>

--

在“网络”选项卡上,它会显示包含内容,并在其之后自动加载两个脚本:

javascript - Google跟踪代码管理器同时包含旧版Analytics(GA)和Universal Analytics(UA)脚本-LMLPHP

--

如果我分析Google跟踪代码管理器脚本(gtm.js),则会看到以下内容:
else if (!a) {
    var N = c["60"] ? ".google-analytics.com/u/ga_debug.js" : ".google-analytics.com/ga.js";
    a = !0;
    u(x("https://ssl", "http://www", N, r), O, c["66"])
}

和这个:
if (!a) {
    var M = b["60"] ? "u/analytics_debug.js" : "analytics.js";
    b[""] && !b["60"] && (M = "internal/" + M);
    a = !0;
    bb(x("https:", "http:", "//www.google-analytics.com/" + M, d && d.forceSSL), function() {
        var a = $a();
        a && a.loaded ||
            b["66"]();
    }, b["66"])
}

--

因此,谷歌标签管理器包括两个脚本。我可以假定使用通用Google Analytics(分析),但是为什么使用旧的ga.js脚本?

是否可以避免同时包含两个或仅包含旧的ga.js脚本?

谢谢你。

编辑

我开始赏金计划是因为我需要解释这种情况的发生原因,以及是否有可能避免这种行为的方法。

最佳答案

GTM不会自动加载这两个脚本。

如果先前的标签触发未加载,则您在已发布容器中定义的标签会加载相关脚本以触发。

例如,第一个标记仅在触发时才加载经典GA,而最后一个标记在触发时加载UA,并在每次页面加载时触发:
javascript - Google跟踪代码管理器同时包含旧版Analytics(GA)和Universal Analytics(UA)脚本-LMLPHP

您可以通过将客户端置于预览的 Debug模式来确定哪个标签真正触发,如果脚本仍然令人困惑,则可以导出容器并查看其定义(或自定义JS)以查找与脚本相关的标签:

javascript - Google跟踪代码管理器同时包含旧版Analytics(GA)和Universal Analytics(UA)脚本-LMLPHP

            "tagId": "7",
            "name": "classic track event",
            "type": "ga",

            "tagId": "1",
            "name": "page track",
            "type": "ua",

10-08 04:59