【问题标题】:Does Google Analytics emit an event when they are set up?Google Analytics 在设置时会发出事件吗?
【发布时间】:2017-03-20 17:55:04
【问题描述】:

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

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

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

但不想在 GA 准备就绪时发送 GA 事件。我想在 GA 准备好时问它一个问题。

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

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

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


(我无法使 cmets 中的格式配合,所以我改变了我的问题以回应 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 东西符号已经可用?

【问题讨论】:

    标签: javascript google-analytics callback shopify


    【解决方案1】:

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

    根据the documentation

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

    因为只有在 analytics.js 库运行后才会执行命令 满载,传递命令队列的最常见原因 函数作为加载 analytics.js 库时的回调 准备好了。

    因此,您可以尝试:

    ga(function(){var clientId = ga.getAll()[0].get('clientId');});
    

    或类似的东西。

    【讨论】:

    • (Feathercrown,请参阅答案底部的较早回复。)查看您引用的文档中的 javascript sn-p ,看起来好像应该立即定义 ga 。然而,事实并非如此。我的客户在这个网站上做了什么奇怪的事情?
    • 我想我有点惊讶,等待窗口上的“加载”事件还不够长。至少要定义 window.ga 符号。但我想他们可以将 GA 初始化代码放在 setTimeout 或任何东西上,我不知道。
    • 我不确定它是否会帮助下一个人,但我们解决了我们的问题。我们的客户正在使用 Shopify。 Shopify 有一个地方可以放入“Google Analytics sn-p”。它有一个地方可以放置应该立即遵循 GA sn-p 的代码。在那个地方,我们放置代码以发出自定义事件。然后在代码的其他地方,我们监听了那个事件,并做了我们需要做的事情。就像 Feathercrown 描述的那样,将一个函数放入 ga 队列中。非常适用于 Shopify,但也许它会对某人有所帮助。
    • 是的,它成功了! PS-将
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2016-07-30
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多