在插件初始化器 JS 中使用 Google Optimize

大家好,我遇到了一个问题:当启用 v4_gtag 用于分析(替代 v3_analytics)时,我需要 GTag 来支持 Google Optimize,但一直收到“gtag 不是一个函数”的错误。

我在插件的 JS 文件中调用 gtag 函数,有人能提供更多背景信息,解释一下为什么这不起作用吗?

以下是我编写的代码示例,提前感谢!

export default {
  name: 'common-init',
  after: 'inject-objects',
  initialize() {
    gtag('event', 'optimize.callback', {
      name: settings.optimize_js_experiment_id,
      callback: (variation) => {
       console.log(`Variation: ${variation}`)
      }
    })
  }
}

你的 gtag 函数定义在哪里?

我推测,当你在设置中启用 gtag 时,它会被定义为 Discourse 的一部分。

即使已在某处定义,您仍然需要导入。

所以我还是需要在某个地方手动添加 GTag 导入脚本吗?

看起来 gtag 是在运行时定义在 window 对象下的,因此你不需要再次导入它,而是在运行时直接调用,例如 window.gtag
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/google-universal-analytics-v4.js

我能够在启动时定义该函数,我认为 Discourse 在加载时会重新定义它,目前运行正常。但我现在遇到了另一个问题:当我在通用 GA 跟踪代码中添加我的 GA 跟踪代码时,即使我使用的是 v4_gtag,它仍然包含了 analytics.js。这是预期行为吗?这不会导致发送重复事件的问题吗?