Google Analytics 会在设置时发出事件吗?

use*_*796 1 javascript google-analytics callback shopify

我们的一些客户希望向他们报告他们的 Google Analytics ID。得到它并不难。

ga.getAll()[0].get('clientId');

还有一个排队语法,以便在设置 GA 时完成操作。

但是不想在 GA 准备好时发送 GA 事件。准备好后我想问 GA 一个问题。

也许有某种方式可以对 GA 说“当你准备好了,运行这个函数,我传递给你。”

或者,GA 是否在准备好时发出自定义事件?

目前,当窗口发出加载事件时,我的客户正在调用我的代码。但即便如此,仍有一小部分时间 ga 未定义。如果您等待几秒钟,则它已定义。也许一些奇怪的cdn系统。无论如何,我需要一种可靠的方法来确定 GA 何时准备就绪。


(我无法使评论中的格式配合,所以我改变了我的问题来回应 Feathercrown。)

听起来不错!唯一的问题是 ga 尚未定义。这是我自己发送的错误消息示例。
"type": "Page View", "data": { "error": { "message": "ga.getAll is not a function. (In 'ga.getAll()', 'ga.getAll' is undefined)", "message2": "window.GoogleAnalyticsObject = ga", "message3": "typeof ga is not Object" } },

也许 _gxx 符号已经可用?

Fea*_*own 6

ga()仅使用函数进行调用可用作回调 ( ga(readyCallback)),因为该函数只会在“已加载并准备好 analytics.js 库时”运行。

根据文档

通过传递一个函数来调用 ga() 命令队列函数将安排传递的函数在队列中的下一个点执行。

由于命令仅在 analytics.js 库完全加载后执行,因此向命令队列传递函数的最常见原因是作为 analytics.js 库加载并准备就绪时的回调。

因此,您可以尝试:

ga(function(){var clientId = ga.getAll()[0].get('clientId');});
Run Code Online (Sandbox Code Playgroud)

或类似的东西。

  • 我不确定它会帮助下一个人,但我们解决了我们的问题。我们的客户正在使用 Shopify。Shopify 有一个地方可以放入“Google Analytics 代码段”。它有一个地方可以放置应紧跟 GA 片段的代码。在那个地方,我们放置代码来发出自定义事件。然后我们在代码的其他地方监听那个事件,并做我们需要做的事情。将一个函数放入 ga 队列,正如 Feathercrown 所描述的那样。非常 Shopify 特定的,但也许它会帮助某人。 (2认同)