У меня есть мультитенантный сайт с общим заголовком, куда я в настоящее время вставляю код Google Analytics с помощью следующего простого JavaScript.
if (window.location.href.startsWith("https://docs.domain1.com"))
{
loadGroupDocsCloudResources('UA-xxxxxxx-x');
}
function addGoogleTrackingCode(trackingCode)
{
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "https://www.googletagmanager.com/gtag/js?id = " + trackingCode;
s.setAttribute('async','');
$("head").append(s);
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', trackingCode);
}
Это работает нормально, однако теперь мы определили контейнеры GTM для каждого сайта, и поэтому необходимо обновить код, чтобы вставить то же самое.
До сих пор я пытался добавить код, сохранив сценарии GTM в 2 переменных и введя их в head и body с помощью команды добавления JavaScript, которая не сработала.
Обратите внимание, что скрипты GTM состоят из двух частей, следующие должны войти в голову.
<!-- Google Tag Manager -->
<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-xxxxxx');</script>
<!-- End Google Tag Manager -->
Следующее должно войти в тело.
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src = "https://www.googletagmanager.com/ns.html?id=GTM-xxxxx"
height = "0" width = "0" style = "display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
Есть ли способ справиться с этим динамически? Значит, я хочу поставить 3 и более набора скриптов GTM для разных сайтов через JavaScript?
@EikePierstorff, мне все еще нужно динамически добавлять noscript в многосайтовую настройку, построенную на JSP. Есть ли у вас предложения, как его добавить, если не использовать JavaScript.
Вы можете включить скрипт Диспетчера тегов Google так же, как и для gtag. 1. loadscript: googletagmanager.com/gtm.js?id=CONTAINERID&l=dataLayer 2. после загрузки скрипта инициализировать вызовом gtag ('gtm.start', new Date ());



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


Не ответ, но я все же хочу отметить, что бессмысленно вводить тег noscript через Javascript, поэтому вы можете отказаться от второй части.