谷歌分析trackEvent如何运作?

mko*_*yak 4 javascript google-analytics

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

_gaq = _gaq || [];

_gaq.push(['trackEvent', 'something', 'bleee']);
Run Code Online (Sandbox Code Playgroud)

好的,所以我明白了,我正在将数据推入一些神奇的阵列.但谷歌的剧本如何知道我这样做了?它必须要么轮询这个数组(不太可能),要么当用户离开页面时它会对它做一些事情.

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

有人能向我解释这个魔法是如何起作用的吗?

Jas*_*per 5

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

Google这样做是因为如果您_gaq在评估GA片段之前尝试使用数组的推送方法,那么您只需创建一个命令队列即可发送给Google(在标准数组中).如果GA片段已经过评估,那么您实际上正在运行Google创建的自定义函数来替换该.push方法.

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

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