6

使用(异步版本)Google Analytics 跟踪出站链接的官方建议是将跟踪事件推送到队列中,例如:

gaq.push(['_trackEvent', 'Outbound', 'http://foo.bar/']);
setTimeout('document.location = "http://foo.bar"', 100);

将匿名函数推送到 GA 队列中会不会更好,例如:

gaq.push(['_trackEvent', 'Outbound', 'http://foo.bar/']);
gaq.push(function() { document.location = 'http://foo.bar/'; });

在这个setTimeout版本中,不能保证在重定向发生之前处理事件,而在第二个版本中,它只会在处理完事件后重定向——对吗?

4

2 回答 2

2

执行您的建议的问题是在页面更改之前它没有时间执行请求。

在继续导航用户之前,浏览器不会等待这两个事件完成。如果您熟悉 jQuery,它类似于向click链接添加事件处理程序,ajax向该处理程序添加请求,但不在event.preventDefault()那里放置。换句话说,ajax 请求不会被处理,因为用户已经转到了下一页。

正如您在评论中提到的那样进行编辑,如果您也适用return false于链接,这无关紧要。

如果您实际上可以像示例中所示那样推送一个函数,我真的不明白为什么它不能更好地工作,除了第一个请求由于某种原因超时,使用户等待远远超出100ms 他们通常会。

那些被谷歌屏蔽的用户呢?有很多插件/程序等可以完全屏蔽谷歌分析、adsense 等。这些用户会有正常的用户体验吗?

于 2011-06-06T18:13:51.227 回答
0

最好的方法是使用hitCallbackGA 支持的功能。hitCallback是一个在成功发送命中后立即调用的函数。

在您的情况下,您可以执行以下操作:

     // if after 300 ms, we still didn't get any action from hitCallback,
     // redirect manually
    setTimeout(function() {
      document.location = 'http://foo.bar/';
    }, 300);

    _gaq.push(['_set', 'hitCallback', function() {
      document.location = 'http://foo.bar/';
    }]);

    _gaq.push(['_trackEvent', 'outbound link ','click', 'http://foo.bar/']);

我在这里做了一个要点:https ://gist.github.com/jonasva/aa20811003e7077360fcb1b297f0311d

于 2016-10-10T03:40:23.720 回答