我正在尝试理解这个如何运作:
_gaq = _gaq || [];
_gaq.push(['trackEvent', 'something', 'bleee']);
好的,我明白了,我正在向某个神奇的数组中推送数据。但是谷歌的脚本如何知道我已经这样做了呢?它必须要么轮询这个数组(不太可能),要么在用户离开页面时对其进行操作。
我发现,在离开页面时发出请求通常会导致连接在请求完成之前被关闭。
有人能解释一下这个神奇的工作原理吗?
我正在尝试理解这个如何运作:
_gaq = _gaq || [];
_gaq.push(['trackEvent', 'something', 'bleee']);
好的,我明白了,我正在向某个神奇的数组中推送数据。但是谷歌的脚本如何知道我已经这样做了呢?它必须要么轮询这个数组(不太可能),要么在用户离开页面时对其进行操作。
我发现,在离开页面时发出请求通常会导致连接在请求完成之前被关闭。
有人能解释一下这个神奇的工作原理吗?
.push()
方法。因此当你将某些东西推送到“数组”上时,它会激活更多的代码(一个函数),从而创建跟踪像素。_gaq
数组的 push 方法,那么您只是创建了一个发送到 Google 的命令队列(在标准数组中)。如果 G.A. 代码片段已经被评估,那么您实际上正在运行谷歌创建的替换 .push
方法的自定义功能。
这个函数命名为 push ,以便在分析完全加载之前可以使用数组来替代 _gaq 。正在加载分析时,命令将被推送/排队到数组上。当分析完成加载后,它将用 _gaq 对象替换数组并执行所有排队的命令。对 _gaq.push 的后续调用会解析到该函数,该函数会在推送命令时执行。
*来源:https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApi_gaq#_gaq.push*
_gaq数组在Google Analytics JS库加载时被读取。 _gaq仅是一个方法列表(及其参数),当库成功加载时调用。 Piwik,另一个Web分析系统,也采用了相同的方法。
_gaq.push(..)
在库加载后将无法跟踪任何内容。但事实并非如此。 - mkoryak
_gaq
,因此一旦分析代码运行,它就不再是一个数组。 - Matthew Crumley