我试图了解这将如何工作:
_gaq = _gaq || [];
_gaq.push(['trackEvent', 'something', 'bleee']);
好的,所以我明白了,我正在将数据推送到一些魔术数组中。但是谷歌的脚本怎么知道我已经这样做了?它必须要么轮询这个数组(不太可能),要么在用户离开页面时对其进行处理。
我发现在离开页面时发出请求通常会导致连接在请求完成之前关闭。
有人可以向我解释这个魔法是如何工作的吗?
我试图了解这将如何工作:
_gaq = _gaq || [];
_gaq.push(['trackEvent', 'something', 'bleee']);
好的,所以我明白了,我正在将数据推送到一些魔术数组中。但是谷歌的脚本怎么知道我已经这样做了?它必须要么轮询这个数组(不太可能),要么在用户离开页面时对其进行处理。
我发现在离开页面时发出请求通常会导致连接在请求完成之前关闭。
有人可以向我解释这个魔法是如何工作的吗?
.push()
Google 使用自定义方法创建了自己的对象。因此,当您将某些东西推送到“阵列”上时,它会激活更多代码(一个函数)来创建跟踪像素和 wallah。
_gaq
Google 这样做是为了如果您在评估 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 *
加载库时,谷歌分析 js 库会读取数组 _gaq。_gaq 只是成功加载库时要调用的方法列表(及其参数)。Piwik,另一个网络分析系统,使用相同的方法。