2010-11-21 57 views
1

我创建了一个网站,其中主要内容通过Ajax调用进行了更改,并且我想添加Google Analytics代码(使用async _gaq方法)。 我知道我需要推送一个带有_gaq的URI的_trackPageview事件。有两种方法可以做到这一点:在Google Analytics中使用Ajax

1)在我的链接和表单上使用onclick属性(或使用JQuery绑定事件),例如:onlink =“_ gaq.push(....)”

2)由于我的ajax代码可以在从ajax请求接收数据时处理脚本,因此在提供ajaxed页面时,我可以在这样的脚本片段中添加_gaq.push(...)调用。

使用第一个选项,我猜想得到一个更清晰和更简洁的代码。然而,缺点是我必须记住放入所有链接并形成分析代码,如果我在JS验证的表单上使用它,即使验证失败,也会通过GA分析点击。

第二个选项似乎不那么干净,但解决了上述问题。我可以有一个GA代码,它只是检查我们是否提供ajax或普通页面,并相应地输出一个JS片段。此外,只有在真正提交表单时,表单提交才会被记录。

我希望对此有任何想法或意见。也许有更多的考虑,或者这样做的方法?

感谢 亚龙

回答

4

有一些更聪明的方法,如果你正在使用jQuery来做到这一点。

一种可能是从那里绑定到事件ajaxSuccess

$(document).ajaxSuccess(function(e, xhr, opt){ 
    _gaq.push(['_trackPageview', opt.url]); 
}); 

然后对所有的jQuery的AJAX调用将触发该事件,它会推动你通过Ajax请求_gaq的URL。

请记住,它会按照您请求的方式来推送网址。所以,如果你拨打:

$.ajax('http://www.mydomain.com/path') 

http://www.mydomain.com/path将被推到_gaq。可能这不是你想要的。所以最好叫.ajax这样的:

$.ajax('/path'); 

现在只有/path推到_gaq那。

如果您确实需要使用整个域名,则最好在推送到Google Analytics(分析)之前对其进行清理。

+0

感谢爱德华多, 我喜欢这个主意,并需要进一步考虑。我能看到的唯一缺点是,如果某些Ajax调用不是要发送到分析,那么我需要一些额外的逻辑。但我想这是可行的。 – Yaron 2011-08-31 08:00:54

1

我发布这个作为一个新的答案,因为它是一种不同的方法。

如果您不想绑定到全局事件ajaxSucess,则可以使用deferreds手动完成。

$.ajax('/page').done(function(){ 
    _gaq.push(['_trackPageview', '/page']); 
}).done(function(response){ 
    // Do something with the response 
}); 

不好的一点是完成的回调没有收到url。所以你会输入两次URL。因为你可能会做几次,它可能是很方便的创建一个辅助功能:

function GaAjax(url){ 
    return (function(u){ 
    return $.ajax(u).done(function(){ 
     _gaq.push(['_trackPageview', u]); 
    }); 
    })(url); 
} 

现在你可以调用,而不是jQuery的.ajax的,当你做一个Ajax请求应发送到Google Analytics(分析)。

GaAjax('/page').done(function(){ 
    // Do something with the response 
});