我试图了解这是如何工作的:
_gaq = _gaq || [];
_gaq.push(['trackEvent', 'something', 'bleee']);
好的,所以我明白了,我正在将数据推入一些魔术阵列。但谷歌的剧本如何知道我这样做了?它必须要么轮询这个数组(不太可能),要么当用户离开页面时它会对它做一些事情。
我发现在离开页面时发出请求通常会导致连接在请求完成之前关闭。
有人可以向我解释这个魔法是如何起作用的吗?
答案 0 :(得分:5)
Google使用自定义.push()
方法创建了自己的对象。因此,当你将某些东西推到“数组”上时,它会激活更多代码(一个函数)来创建跟踪像素和wallah。
Google这样做,以便在G.A.之前尝试使用_gaq
数组的推送方法。片段已被评估,您只是创建一个命令队列以发送给Google(在标准数组中)。如果G.A.片段已经过评估,然后您实际上正在运行Google创建的自定义函数来替换.push
方法。
此函数名为push,因此可以在该位置使用数组 在Google Analytics完全加载之前的_gaq。虽然分析是 loading,命令将被推送/排队到数组上。分析时 完成加载后,它用_gaq对象替换数组 执行所有排队的命令。后续调用_gaq.push 解析为此函数,该函数在按下时执行命令。
*来源:https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApi_gaq#_gaq.push *
答案 1 :(得分:0)
加载库时,谷歌分析js库会读取数组_gaq。 _gaq只是在成功加载库时要调用的方法列表(及其参数)。 另一个网络分析系统Piwik使用相同的方法。