Javascript 当使用Google Analytics跟踪出站链接时,为什么要延迟出站单击,而不是将函数推入队列?
使用(异步版本的)Google Analytics跟踪出站链接的方法是将跟踪事件推送到队列中,如:Javascript 当使用Google Analytics跟踪出站链接时,为什么要延迟出站单击,而不是将函数推入队列?,javascript,google-analytics,outbound,Javascript,Google Analytics,Outbound,使用(异步版本的)Google Analytics跟踪出站链接的方法是将跟踪事件推送到队列中,如: gaq.push(['_trackEvent', 'Outbound', 'http://foo.bar/']); setTimeout('document.location = "http://foo.bar"', 100); 像这样不是更好吗 在setTimeout版本中,无法保证事件会在重定向发生之前被处理,而在第二个版本中,它只会在事件被处理后重定向,对吗?执行建议的问题是,它没有时间在
gaq.push(['_trackEvent', 'Outbound', 'http://foo.bar/']);
setTimeout('document.location = "http://foo.bar"', 100);
像这样不是更好吗
在setTimeout
版本中,无法保证事件会在重定向发生之前被处理,而在第二个版本中,它只会在事件被处理后重定向,对吗?执行建议的问题是,它没有时间在页面更改之前执行请求
浏览器不会等待这两个事件完成后再继续导航用户。如果您熟悉jQuery,它将类似于向链接添加click
事件处理程序,向该处理程序添加ajax
请求,但不将event.preventDefault()
放在其中。换句话说,ajax请求不会被处理,因为用户已经进入下一页
编辑正如您在评论中提到的,如果您也将返回false
应用于链接,则这与此无关
如果你真的可以像你在例子中所演示的那样推送一个函数,我真的不明白为什么它不能更好地工作,除了第一个请求由于某种原因超时,使得用户的等待时间远远超过了通常的100毫秒
那些被谷歌屏蔽的用户呢?有很多插件/程序等可以完全屏蔽google analytics、adsense等。这些用户会有正常的用户体验吗?最好的方法是使用GA支持的
hitCallback
函数。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/']);
我在这里做了一个要点:是不是默认事件没有通过放置
return false来阻止在锚点的onClick
中选择code>?(在,
)@lucasrizoli是的,这使得我的答案完全不相关。感谢您指出这一点并非无关紧要:我在问题中省略了额外的onClick
内容;很高兴在这里指出这一点。无论如何,在事件上使用preventDefault
可能比使用return false
更好。如果您真的可以像示例中所示那样推送一个函数,我真的不明白为什么它不能更好地工作,除了第一个请求由于某种原因超时,让用户的等待时间远远超过通常的100毫秒。是的,不过我想我可以添加setTimeout('document.location='http://foo.bar"', 100);
还介绍了GA没有足够快地处理队列中的事件和功能的情况,以及GA在用户端被阻塞的情况。
// 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/']);