我想跟踪网页上用户的点击次数。 但我有点困惑。看看这段代码:
<a href="http://example.com" onClick=”_gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);”>Follow Us</a>
^如果用户在google analitics跟踪之前被重定向到http://example.com
怎么办?那又怎样?我是对的,那个例子有竞争条件吗?
答案 0 :(得分:2)
没有竞争条件。调用单击处理程序并在页面导航开始之前完全执行。该单击处理程序创建一个ajax请求,其响应无关紧要。在页面导航开始之前启动ajax请求。
不要被方法名称所欺骗。 According to google:
此函数名为push,以便在Analytics完全加载之前可以在_gaq的位置使用数组。在加载Analytics时,命令将被推送/排队到阵列上。当Analytics完成加载时,它会使用_gaq对象替换该数组并执行所有排队的命令。对_gaq.push的后续调用将解析为此函数,该函数在按下时执行命令。
最初,.push()
只是将命令推送到数组中,一旦Analytics加载,这些命令就会立即执行。
答案 1 :(得分:0)
你可以这样做:
使用jQuery:
$('a').on('click', function(e){
e.preventDefault();
var $el = $(this);
_gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);
setTimeout(function(){
window.location.href = $el.attr('href');
}, 100);
});
没有jQuery:
document.getElementById('someIdOfLink').addEventListener('click', function(){
return false;
var $el = this;
_gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);
setTimeout(function(){
window.location.href = $el.getAttribute('href');
}, 100);
});
希望能帮到你!