You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS多租户站点如何动态插入Google tag (gtag.js)跟踪ID

AngularJS 多租户站点动态集成gtag.js实现方案

1. 替换index.html中的基础脚本

删除原有analytics.js相关的加载代码,替换为gtag的基础初始化代码,不需要写死跟踪ID,也不需要提前加载gtag资源:

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
</script>

2. 修改控制器中的setupAnalytics逻辑

替换原有ga相关的调用逻辑,实现动态插入gtag资源、初始化跟踪ID、路由切换上报页面浏览:

function setupAnalytics() {
  var googleTagEnabled = $settings.checkTrue('Analytics/GoogleTagEnabled');
  var googleTag = $settings['Analytics/GoogleTag'];
  if (googleTagEnabled && googleTag) {
    // 避免重复加载gtag脚本
    if (!document.querySelector('script[src*="gtag/js"]')) {
      var script = document.createElement('script');
      script.async = true;
      script.src = `https://www.googletagmanager.com/gtag/js?id=${googleTag}`;
      document.head.appendChild(script);
    }

    // 初始化gtag
    gtag('js', new Date());
    // 关闭默认页面浏览上报,改用路由切换时主动上报
    gtag('config', googleTag, {
      send_page_view: false
    });

    // 路由切换时上报页面浏览
    $rootScope.$on('$stateChangeSuccess', function (event) {
      gtag('event', 'page_view', {
        page_path: $location.path(),
        send_to: googleTag
      });
    });
  }
}

注意事项

  • 动态加载脚本前做了重复加载判断,避免租户切换时重复插入资源
  • 关闭了gtag初始化时的默认页面上报,保证单页应用路由跳转的页面浏览数据准确
  • 所有上报都绑定了当前租户的Tracking ID,不会出现多租户数据串流问题

内容的提问来源于stack exchange,提问作者nesterenes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 09:15:03