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

在使用plugin-google-analytics的Docusaurus站点通过JS禁用Google Analytics

失效原因

官方禁用方案本身是有效的,失效核心原因是你设置window['ga-disable-GA_MEASUREMENT_ID'] = true的时机晚于Docusaurus加载GA脚本、发送初始页面访问统计的时机,和站点静态编译特性无关。

可行解决方案

场景1:初始化阶段根据用户隐私同意状态禁用

需要确保禁用标记在GA脚本加载前就被设置,可通过在站点head中插入前置内联脚本实现:

  1. 打开docusaurus.config.js配置文件
  2. 在head配置项最顶部插入判断脚本,示例如下:
module.exports = {
  // 其他原有配置保持不变
  head: [
    [
      'script',
      {},
      `
      // 示例逻辑:从localStorage读取用户是否选择退出统计
      const userOptOut = localStorage.getItem('ga_opt_out') === 'true'
      if (userOptOut) {
        // 替换为你自己的GA测量ID
        window['ga-disable-G_XXXXXXXXX'] = true
      }
      `
    ],
    // 其他原有head配置放在后面
  ],
  plugins: [
    // 原有GA插件配置不用修改
    ['@docusaurus/plugin-google-analytics', {
      trackingID: 'G_XXXXXXXXX',
    }],
  ]
}

场景2:页面内实时开关控制统计启停

除了上面的初始化判断逻辑,开关切换时需要同时更新本地存储状态和实时拦截上报:

// 开关切换处理函数,可直接绑定到页面开关组件的change事件
function toggleAnalytics(enable) {
  const gaId = 'G_XXXXXXXXX'
  if (enable) {
    localStorage.removeItem('ga_opt_out')
    window[`ga-disable-${gaId}`] = false
    // 恢复上报权限
    if (window.gtag) window.gtag('consent', 'update', { analytics_storage: 'granted' })
  } else {
    localStorage.setItem('ga_opt_out', 'true')
    window[`ga-disable-${gaId}`] = true
    // 实时拦截后续所有上报请求
    if (window.gtag) window.gtag('consent', 'update', { analytics_storage: 'denied' })
  }
}

验证方法

打开浏览器开发者工具的Network面板,筛选请求地址包含google-analytics.com/collect的请求,切换开关后触发页面跳转或交互,观察是否有对应的上报请求产生即可验证是否生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:04