代码之家  ›  专栏  ›  技术社区  ›  Mike Robinson

异步谷歌分析何时以及如何执行?

  •  9
  • Mike Robinson  · 技术社区  · 15 年前

    我正在切换我们的站点,使用异步的Google分析,我很好奇它是将事件推送到GAQ数组的方法。据我所知,当GA.JS脚本异步下载时,事件被放置到GAQ中的等待模式中。一旦脚本被下载,它们会触发吗?如何跟踪文档后加载事件?

    一个例子是,用户在页面加载10秒后点击一个链接——根据文档,事件应该放在gaq中。分析脚本如何检测到这一点?

    2 回复  |  直到 15 年前
        1
  •  8
  •   gregers    15 年前

    一般部分最好用 Google Analytics Async doc .

    要将API调用推送到队列中,必须将其从传统的JavaScript语法转换为命令数组。命令数组只是符合特定格式的javascript数组。命令数组中的第一个元素是要调用的跟踪器对象方法的名称。它必须是一个字符串。其余的元素是要传递给tracker对象方法的参数。这些可以是任何javascript值。

    我会尽力解释这些有趣的细节: _ GAQ只是一个普通的javascript数组,所有数组都有push方法来向数组的末尾添加一个条目。因此,在加载分析脚本之前,所有命令都将被推送到数组中。在分析脚本的末尾,它用一个自定义方法替换了gaq.push方法,并执行gaq数组中的所有条目。新的gaq.push方法将立即运行跟踪方法。因此,当您在页面加载10秒后运行push方法时,应该执行该命令。

        2
  •  0
  •   Ryan McGeary    15 年前

    解开谷歌分析代码总是很困难的,但是如果我要解决这个问题,在加载脚本时,我会重新定义 push 在处理积压工作队列中的所有内容后对数组执行函数( _gaq )这样,重新定义 函数将简单地作为实际函数调用的代理 pageTracker 对象。

    下面是重新定义 数组对象上的方法:

    var foo = [];
    foo.push("one");                      // pushes "one" onto the array
    foo.push("two");                      // pushes "two" onto the array
    foo.push = function(a) { alert(a) };  // redefines `push`
    foo.push("three");                    // alerts "three"
    alert(foo);                           // alerts "one,two"