在使用Google Analytics跟踪出站链接时,为什么要延迟出站点击而不是将功能推入队列?

luc*_*oli 6 javascript google-analytics outbound

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

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

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

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

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

Nik*_*las 2

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

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

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

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

被谷歌屏蔽的用户怎么办?有很多插件/程序等可以完全阻止谷歌分析、Adsense 等。这些用户会有正常的用户体验吗?