Javascript google analytics trackEvent是如何工作的?

Javascript google analytics trackEvent是如何工作的?,javascript,google-analytics,Javascript,Google Analytics,我试图理解这是如何工作的: _gaq = _gaq || []; _gaq.push(['trackEvent', 'something', 'bleee']); 好的,我明白了,我正在把数据放入一个神奇的数组中。但是谷歌的脚本怎么知道我已经做到了呢?它必须轮询此数组(不太可能),或者在用户离开页面时对其执行某些操作 我发现在离开页面时发出请求通常会导致连接在请求完成之前关闭 有人能给我解释一下这个魔法是如何工作的吗?谷歌已经用一个自定义的.push()方法创建了自己的对象。因此,当你把一些

我试图理解这是如何工作的:

_gaq = _gaq || [];

_gaq.push(['trackEvent', 'something', 'bleee']);
好的,我明白了,我正在把数据放入一个神奇的数组中。但是谷歌的脚本怎么知道我已经做到了呢?它必须轮询此数组(不太可能),或者在用户离开页面时对其执行某些操作

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


有人能给我解释一下这个魔法是如何工作的吗?

谷歌已经用一个自定义的
.push()
方法创建了自己的对象。因此,当你把一些东西推到“数组”上时,它会激活更多的代码(一个函数),从而创建一个跟踪像素和wallah

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

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

*资料来源:*


加载库时,google analytics js库将读取数组gaq。 _gaq只是库成功加载时要调用的方法(及其参数)列表。
Piwik,另一个Web分析系统,也使用同样的方法。

我相信他们完全用一个新对象取代了
\u gaq
,所以一旦分析代码运行,它就不再是数组了。@MatthewCrumley Good call,我的措辞很笨拙。按照这种逻辑,
\u gaq.push(…)
在加载库后不会跟踪任何内容。事实并非如此。@mkoryak-创建此方法是为了实现异步跟踪。很久以前,应该在加载js跟踪库之前定义数组。google改进了使用对象替换数组的方法,以便在js库加载前后提供相同的接口。