Я улучшаю производительность и время загрузки нашего интернет-магазина, и мы используем в нем Диспетчер тегов Google. Но скрипт, который включает диспетчер тегов Google, также по умолчанию загружает Google Analytics (устаревший ga.js) и Universal Google Analytics (analytics.js). Оба они мне не нужны, но при необходимости мне нужна только Universal 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>
-
На вкладке сети появляется включение и после него автоматически загружаются оба скрипта:
-
Если я проанализирую скрипт Google Tag Manager (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 включает оба сценария. Я могу предположить Universal Google Analytics, но старый скрипт ga.js почему ??
Могу ли я избежать включения обоих или только устаревших сценариев ga.js?
Спасибо.
Я назначил награду, потому что мне нужно объяснение, почему это происходит, и, если возможно, способ избежать такого поведения.
@vinoaj, как вы можете видеть в сообщении, оба кода устанавливаются для кода GTM, устаревшего ga и unversal ga.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


GTM автоматически не загрузил ни один из этих скриптов.
Теги, которые вы определили в опубликованном контейнере, загружают соответствующий скрипт, который запускается, если предыдущее срабатывание тега не загрузило его.
Например, первый тег загружает классический GA только в том случае, если он запущен, а последний тег загружает UA при запуске и запускается при каждой загрузке страницы:

Вы можете определить, какие из ваших тегов действительно срабатывают, переведя клиента в режим отладки предварительного просмотра, и если сценарий все еще вызывает недоумение, вы можете экспортировать свой контейнер и просмотреть его определения (или пользовательский JS), чтобы найти теги, которые относятся к сценариям:
"tagId": "7",
"name": "classic track event",
"type": "ga",
"tagId": "1",
"name": "page track",
"type": "ua",
Это кажется логичным. GTM настраивался людьми в прошлом, я не знаю, правильный ли это ответ. Я проверю и дам вам знать. Спасибо!
Хорошо. Я не мог это проверить, потому что в бизнесе, в котором я работаю, у меня нет доступа к диспетчеру тегов Google, однако я дал знать своим коллегам, которые проверят его и решат проблему. Я приму это как правильный ответ, поэтому награда для вас. Большое спасибо!
Насколько я понял, моя лучшая гипотеза заключается в том, что он загрузит ga.js только в том случае, если он понадобится вашему контейнеру.
Единственный случай, который мне удалось найти, - это когда вы используете тег «Классический Google Analytics» (который является самой старой версией) вместо тега «Универсальная аналитика».
Я также пробовал создавать и использовать переменные dataLayer v1, но, похоже, для этого не нужен ga.js.
Если вы можете найти больше случаев, поделитесь ими, поскольку это на самом деле довольно интересно, и даже когда GTM почти не влияет на производительность сайта, об этом нужно помнить.
Просматривали ли вы теги в GTM, чтобы убедиться, что там только теги Universal Analytics?