<script type="text/javascript"> var _gaq = _gaq || []; _gaq.push( ['_setAccount','UA-xxxxxxxx-x'],['_trackPageview'] ); </script>
现在,这是一个标准数组,在加载GA代码后会被替换,并用作存储点击的一种队列.
我的困惑在于想知道如果用户点击导致重新加载的链接(在加载GA javascript之前),这些点击可能会如何持续存在.如果GA代码没有捕获到_gaq对象的那个推送,那么用户点击一个链接并转到一个新页面,这个数组每次都没有重新初始化?
在导致刷新的请求中,javascript变量不会持久存在吗?如果是这种情况,那么我们还没有丢失导致页面重新加载的原始点击吗?
非常感谢任何解释.
解决方法
首先,使用此方法加载ga.js不会阻塞.
巧妙地,ga.js的加载是通过JavaScript间接注入的,而不是通过硬编码的<脚本>注入.标签.按照Google Code Blog,
The second half of the snippet
provides the logic that loads the
tracking code in parallel with other
scripts on the page. It executes an
anonymous function that dynamically
creates a element and sets
the source with the proper protocol.
As a result,most browsers will load
the tracking code in parallel with
other scripts on the page,thus
reducing the web page load time.
这意味着ga.js的加载对于大多数现代浏览器以非阻塞方式发生(并且作为一个好处,async =“true”部分,当前在FF 4+,IE10p2+,Chrome 12+,Safari 5.1+,中支持正式化此异步).这可以温和地减少加载时间,并且可以轻微降低ga.js加载前发生点击的可能性.
提前排队_gaq阵列的好处是防止竞争条件;之前,如果您在加载ga.js之前尝试进行GA调用(例如,事件跟踪视频播放),则会抛出错误并且事件调用将丢失且永远无法恢复.这样,只要ga.js最终加载,_gaq数组就可以在加载时为所有调用提供服务.