确保通过绑定到链接的GET请求发生跟踪事件

Guarantee a tracking event via GET request bound to a link occurs

本文关键字:请求 跟踪 事件 GET 绑定 链接 确保      更新时间:2023-09-26

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

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

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

所以我的问题是:

  1. 是否有某种全局变量包含有关正在发生的所有请求的信息,可以帮助我完成我想要的任务?

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

提前感谢

通常处理此问题的方法是使用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>