谷歌分析异步: 事件跟踪回调?

13

我希望使用事件跟踪来记录用户点击特定类型的链接以访问另一个网站。我正在使用jQuery,目前的代码如下:

$('a.website').click(function(event) {
    var href = $(this).attr('href');
    try {
        _gaq.push(['_trackEvent', 'website', 'click', href]);
    } catch(err) {}
});

然而,在从另一个站点获取引荐信息后,我不认为这准确地跟踪了点击,可能是因为 _gaq.push 是异步的,而且请求在浏览器导航到URL之前就已经被接收,并且终止了当前页面上运行的任何Javascript。

是否有办法检测_gaq.push函数已成功完成,以便我可以使用event.preventDefault()document.location来记录事件后导航到链接?

3个回答

12

Google的跟踪器文档中,我没有看到_set方法。你能提供更多关于这个方法的信息吗? - Matt Austin

9
这个答案提供的解决方案怎么样?
  // 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; });

谢谢你的建议。我打算试一下用这个方法,然后我会向你汇报结果。 - Matt Austin
我会采用这种方法。虽然我无法收集足够的数据证明这种方法更准确,但它没有导致任何更多的事件丢失。 - Matt Austin
11
实际上这并不起作用。在Firebug或Webkit Inspector的网络面板中观察。你会发现__utm.gif被表单提交打断了,无法被跟踪。 - Eric D. Fields
@EricD.Fields 我在想,即使__utm.gif没有发送回客户端,请求是否仍然会被执行并且跟踪成功。这是可能的吗? - caesarsol
@caesarsol 是正确的,只要服务器收到请求,客户端是否收到响应并不重要。 - ColinM

1
我曾经遇到过与外部链接跟踪类似的问题。我的解决方法是使用OnMouseDown事件而不是OnClick

1
虽然这种方法可能通过“启动器”来获得更好的准确性,但我认为这种方法仍不能保证事件跟踪请求在浏览器导航到其他地方之前已发送?此外,这可能会导致错误读数,因为用户可能会按下鼠标,然后将其移开链接。 - Matt Austin
你可以尝试在GA的新界面中使用实时跟踪进行测试。OnMouseDown对我有效,可以尝试使用OnMouseUp或者更复杂的操作。 - Nikolay
那些按回车键而不是使用鼠标的用户怎么办? - dotancohen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接