4

我试图了解这将如何工作:

_gaq = _gaq || [];

_gaq.push(['trackEvent', 'something', 'bleee']);

好的,所以我明白了,我正在将数据推送到一些魔术数组中。但是谷歌的脚本怎么知道我已经这样做了?它必须要么轮询这个数组(不太可能),要么在用户离开页面时对其进行处理。

我发现在离开页面时发出请求通常会导致连接在请求完成之前关闭。

有人可以向我解释这个魔法是如何工作的吗?

4

2 回答 2

5

.push()Google 使用自定义方法创建了自己的对象。因此,当您将某些东西推送到“阵列”上时,它会激活更多代码(一个函数)来创建跟踪像素和 wallah。

_gaqGoogle 这样做是为了如果您在评估 GA 代码段之前尝试使用数组的 push 方法,那么您只是创建了一个要发送给 Google 的命令队列(在标准数组中)。如果 GA 代码段已被评估,那么您实际上正在运行 Google 创建的自定义函数来替换该.push方法。

此函数名为 push,以便在 Analytics 完全加载之前使用数组代替 _gaq。在加载分析时,命令将被推送/排队到阵列上。当 Analytics 完成加载时,它会用 _gaq 对象替换数组并执行所有排队的命令。对 _gaq.push 的后续调用解析为该函数,该函数在推送命令时执行命令。

*来源:https ://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApi_gaq#_gaq.push *

于 2012-08-27T17:31:42.603 回答
0

加载库时,谷歌分析 js 库会读取数组 _gaq。_gaq 只是成功加载库时要调用的方法列表(及其参数)。Piwik,另一个网络分析系统,使用相同的方法。

于 2012-08-27T17:40:57.237 回答