跟踪点击链接时是否存在竞争条件?

时间:2014-07-14 19:58:34

标签: javascript google-analytics tracking

我想跟踪网页上用户的点击次数。 但我有点困惑。看看这段代码:

<a href="http://example.com" onClick=”_gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);”>Follow Us</a>

^如果用户在google analitics跟踪之前被重定向到http://example.com怎么办?那又怎样?我是对的,那个例子有竞争条件吗?

2 个答案:

答案 0 :(得分:2)

没有竞争条件。调用单击处理程序并在页面导航开始之前完全执行。该单击处理程序创建一个ajax请求,其响应无关紧要。在页面导航开始之前启动ajax请求。

不要被方法名称所欺骗。 According to google

  

此函数名为push,以便在Analytics完全加载之前可以在_gaq的位置使用数组。在加载Analytics时,命令将被推送/排队到阵列上。当Analytics完成加载时,它会使用_gaq对象替换该数组并执行所有排队的命令。对_gaq.push的后续调用将解析为此函数,该函数在按下时执行命令。

最初,.push()只是将命令推送到数组中,一旦Analytics加载,这些命令就会立即执行。

答案 1 :(得分:0)

你可以这样做:

使用jQuery:

$('a').on('click', function(e){
    e.preventDefault();
    var $el = $(this);
    _gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);
    setTimeout(function(){
       window.location.href = $el.attr('href');
    }, 100);
});

没有jQuery:

document.getElementById('someIdOfLink').addEventListener('click', function(){
   return false;
   var $el = this;
    _gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);
    setTimeout(function(){
       window.location.href = $el.getAttribute('href');
    }, 100);
});
希望能帮到你!