首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matomo -单一站点上的多个容器/标签管理器

Matomo -单一站点上的多个容器/标签管理器
EN

Stack Overflow用户
提问于 2021-04-06 14:17:46
回答 2查看 166关注 0票数 3

设置

  • 我的团队正在构建一个web组件,它集成在许多主机站点上。
  • 每个主机站点都由不同的团队管理,并有自己的Matomo,并具有自己的id,例如<script src="https://.../container_ugas78d7sg.js">
  • 我们只想在我们的仪表盘中想象我们自己的事件。我们不关心主机站点的分析,主机站点也不关心我们的网站。
  • 我的想法是加载第二个标记管理器脚本,例如<script src="https://.../container_asd3s99ssd.js">,并使用第二个容器发送事件。但是,这两个脚本都希望在window._mtm中加载标记管理器。
  • 同一个站点上的多个容器应该是可能的,但文档中没有示例

问题:

  • 如何在不覆盖_mtm的情况下加载第二个容器并向其发送事件
  • 是否有更好的选择而不装载第二个容器?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-06 18:49:49

你可以这样做吗例如:

代码语言:javascript
复制
<!-- Matomo Tag Manager -->
<script type="text/javascript">
    var _mtm1 = window._mtm1 = window._mtm1 || [];
    _mtm1.push({'mtm1.startTime': (new Date().getTime()), 'event': 'mtm1.Start'});

    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.src='https://{$MATOMO_URL}/js/container_{$CONTAINER}.js'; s.parentNode.insertBefore(g,s);

    var d1=document, g1=d1.createElement('script'), s1=d1.getElementsByTagName('script')[1];
    g1.type='text/javascript'; g.async=true; g1.src='https://{$MATOMO_URL}/js/container_{$CONTAINER}.js'; s1.parentNode.insertBefore(g1,s1);
</script>
<!-- End Matomo Tag Manager -->

我认为整个窗口只需要一个_mtm,因为它无论如何都只包含一个startTime。唯一需要做的就是将第二个容器加载到页面中,它们都将使用相同的"startTime“变量--我看不出这两个容器为什么使用不同的"startTime”变量。

我不确定的是,您应该在getElementsByTagName期间获得数组的第一个或第二个元素。

希望它能成功!

票数 2
EN

Stack Overflow用户

发布于 2021-04-07 16:10:33

看来我想得太多了。可以只加载两个不同的容器脚本,而第二个不会覆盖_mtm。两者都可以单独配置,并将事件发送到各自的siteIds。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66970438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档