Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过JavaScript添加Google标签管理器代码_Javascript_Google Tag Manager_Multi Tenant - Fatal编程技术网

如何通过JavaScript添加Google标签管理器代码

如何通过JavaScript添加Google标签管理器代码,javascript,google-tag-manager,multi-tenant,Javascript,Google Tag Manager,Multi Tenant,我有一个多租户的网站,有一个通用的标题,我目前正在通过下面的简单JavaScript注入谷歌分析代码 if(window.location.href.startsWith("https://docs.domain1.com")) { loadGroupDocsCloudResources('UA-xxxxxxx-x'); } function addGoogleTrackingCode(trackingCode) { var s = document.createElement("sc

我有一个多租户的网站,有一个通用的标题,我目前正在通过下面的简单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脚本存储在两个变量中并使用JavaScript的append命令注入head&body来添加代码,但没有成功

请注意,GTM脚本有两个部分,下面是head

<!-- 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 -->

(函数(w,d,s,l,i){w[l]=w[l]||【】;w[l]。推送({'gtm.start':
new Date().getTime(),事件:'gtm.js'});var f=d.getElementsByTagName[0],
j=d.createElement,dl=l!=“数据层”?“&l=”+l:“”;j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(窗口、文档、“脚本”、“数据层”、“GTM-xxxxxx”);
以下内容必须在正文中列出

<!-- 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) -->


有没有办法动态处理这个问题?意思是说,我想通过JavaScript为不同的站点放置3组或更多GTM脚本?

这不是答案,但我仍然想指出,通过JavaScript注入noscript标记是毫无意义的,所以您最好删除第二部分。@EikePierstorff,我仍然需要将noscript动态添加到基于JSP构建的多站点设置中。如果不使用JavaScript,您是否有任何建议如何添加它。您可以使用与gtag相同的方式包含Google标记管理器脚本。1.加载脚本:2。加载脚本后,通过调用gtag('gtm.start',new Date())初始化脚本;