Owe*_*len 18 analytics google-analytics race-condition
我有一个使用Google Analytics更新的异步跟踪方法(_gaq)的网站.我遇到的问题是我想建立一些特定的链接跟踪,并担心我会创建一个竞争条件.
基本上,它是一个新闻网站,所以它有标题链接到各地的故事.故事的标题可能出现在页面上的3个不同位置,并出现在数百个其他页面上.因此,为了理解我们的受众如何与网站进行交互,我们必须跟踪每个特定标题块的使用方式,而不仅仅是目的地.由于这两个规定跟踪单个页面,跟踪引用页面是不够的,我们必须跟踪单个链接.
所以,如果我有一个链接.
<a href="http://www.blah.com" onclick="_gaq.push('_trackEvent','stuff')">Here</a>
Run Code Online (Sandbox Code Playgroud)
因为_gaq.push()是异步调用,所以在Google完成点击跟踪之前是否可能发生页面更改?如果是这样可以防止这种情况发生,或者我对Google AnalyticsAsync的运行方式存在误解(http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html).
Bri*_*ian 11
你是对的.如果浏览器在发送事件的GA跟踪信标(gif命中)之前离开页面,则不会记录该事件.然而,这对异步代码来说并不陌生,因为发送跟踪信标的过程是异步的; 在这方面,旧代码的工作方式相同.如果跟踪非常重要,您可以执行以下操作:
function track(link) {
if (!_gat) return true;
_gaq.push(['_trackEvent', 'stuff']);
setTimeout(function() {location.href=link.href'}, 200);
return false;
}
...
<a href="example.com" onclick="return track(this);"></a>
Run Code Online (Sandbox Code Playgroud)
如果已经加载了GA,这将阻止浏览器在单击链接时转到下一页(最好不要让用户等待那么久).然后它发送事件并等待200毫秒将用户发送到他们点击的链接的href.这增加了记录事件的可能性.您可以通过延长超时来提高可能性,但这也可能会损害用户体验.这是你必须要尝试的平衡.
我也有这个问题,我决心找到一个真正的解决方案.
将函数推入队列怎么样?
// Log a pageview to GA for a conversion
_gaq.push(['_trackPageview', url]);
// Push the redirect to make sure it happens AFTER we track the pageview
_gaq.push(function() { document.location = url; });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6207 次 |
| 最近记录: |