official suggestion使用 Google Analytics(的异步版本)跟踪出站链接是将跟踪事件推送到队列中,例如:
gaq.push(['_trackEvent', 'Outbound', 'http://foo.bar/']);
setTimeout('document.location = "http://foo.bar"', 100);
push an anonymous function into the GA queue不是更好吗,比如:
gaq.push(['_trackEvent', 'Outbound', 'http://foo.bar/']);
gaq.push(function() { document.location = 'http://foo.bar/'; });
在 setTimeout
版本中,不能保证事件会在重定向发生之前被处理,而在第二个版本中,它只会在事件被处理之后才重定向——对吗?
最佳答案
执行您的建议的问题是它没有时间在页面更改之前执行请求。 罢工>
浏览器不会等待这 2 个事件完成后再继续导航用户。如果您熟悉 jQuery,它类似于添加一个 click
。链接的事件处理程序,添加 ajax
向该处理程序请求,但不放置 event.preventDefault()
在那里。换句话说,ajax 请求将不会被处理,因为用户已经转到下一页。
edit 如您在评论中提到的,如果您申请 return false
,这无关紧要以及链接。
如果您实际上可以像您在示例中说明的那样推送一个函数,我真的不明白为什么它不会更好地工作,除了第一个请求超时某种原因,使用户等待的时间远远超过他们通常会等待的 100 毫秒。
那些被谷歌屏蔽的用户呢?有很多插件/程序等可以完全屏蔽 google analytics、adsense 等。这些用户会有正常的用户体验吗?
关于javascript - 使用 Google Analytics 跟踪出站链接时,为什么要延迟出站点击而不是将函数插入队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6230760/