通过绑定到链接的GET请求来保证跟踪事件

时间:2013-11-21 02:04:24

标签: javascript http analytics tracking

我正在使用多个客户端跟踪系统跟踪我网站上的某些事件。它们基本上都以相同的方式工作:将跟踪方法绑定到某个事件(例如点击) - > HTTP请求被发送到跟踪服务器,其中包含有关事件的信息作为参数。这是一个例子:

<a href="http://example.com" onclick="trackEvent();">

我的目标是保证在遵循href之前已完成HTTP请求。挑战在于这些跟踪系统没有可用的回调。因此,我认为解决方案是以某种方式监视正在发生的请求,并确保在相关请求完成之前不重定向页面。

所以我的问题是:

  1. 是否有某种全局变量包含有关所有正在发生的请求的信息,这些信息可以帮助我实现我想要的目标?

  2. 有没有更好的方法来完成我想要做的事情?

  3. 提前致谢

1 个答案:

答案 0 :(得分:0)

通常使用setTimeout来处理这个问题,这是我以前用过的一个例子:

<a href="http://www.example.com/foo" onclick="return track(this);">Example Foo</a>

<script type="text/javascript>
var track = function(item){
    if(item.href.indexOf(location.host) === -1){
        var hostname = item.href.split('/')[2].split('.').slice(-2).join('.'),
            params = ['_trackEvent', 'Outbound', hostname, item.href],
            _gaq = [];

        _gaq.push(params);

        setTimeout(function(){
            location.href = item.href;
        }, 100);
        return false;
    }
    return true;
}
</script>