问题在于,在用户进入下一页之前,脚本没有足够的时间完成运行。您可以做的是为 GA 代码创建一个包装函数,并在 onclick 中调用包装函数,并在包装函数中触发 GA 代码后,设置超时并使用链接的 url 更新 location.href。例子:
<a href="somepage.html" onclick="wrapper_function(this,'category', 'action', 'opt_label', 'opt_value');return false;">click me</a>
<script type='text/javascript'>
function wrapper_function(that,category,action,opt_label,opt_value) {
_gaq.push(['_trackEvent', category, action, opt_label, opt_value]);
window.setTimeout("window.location.href='" + that.href + "'", 1000);
}
</script>
代码会根据您的链接有所不同,但希望您能明白这一点 - 基本上,它会在将用户带到目标网址之前等待一段时间,以便给脚本一些执行时间。
Update:这个答案是几年前发布的,从那时起发生了很多事情,但我仍然偶尔收到反馈(和赞成票),所以我想我会用新信息更新这个答案。这个答案仍然可行,但如果您使用Universal Analytics,那么有一个命中回调 https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback功能可用。这hitCallback其传统功能也可用_gaq (ga.js) https://stackoverflow.com/questions/22743105/google-analytics-hitcallback-event-tracking-not-working/22747401#22747401但它没有正式记录。