2013-10-07 147 views
0

我有一个基本的异步谷歌分析代码trackEvent:谷歌Analytics(分析)不能在功能

var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-XXXXXX']); 
    _gaq.push(['_trackPageview']); 
    (function(){ 
     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
})(); 

低于,我听一个点击,并希望与分析跟踪它:

$('#content').on("click", "#btn", function(e) { 
    var elem = $(this); 
    this.form.target = '_self'; 
    _gaq.push(['_trackEvent', 'download', elem.text()]); 
    return true; 
}); 

点击被触发,我可以看到_gaq被定义为
但是不知何故,事件永远不会被跟踪?
我读https://developers.google.com/analytics/devguides/collection/gajs/?hl=fr
和型动物堆栈溢出的答案,
但我不发现我缺少的是什么...

我发现所有的例子,直接把代码上用onclick在元素上。这是强制性的还是我可以像我一样将代码放入函数中?

回答

0

_trackEvent通过向Google Analytics服务器请求跟踪像素来记录数据,数据作为请求中的参数。如果浏览器开始处理新页面(由于遵循链接或提交表单),则可以取消图像请求,并且不记录数据。

Google的测试版Universal Analytics(analytics.js)允许使用在发送数据时执行的hitCallback函数。

ga.js通常的模式是在链接或提交表单之前添加一个轻微的延迟(150毫秒)。

尝试像

$('#content').on("click", "#btn", function(e) { 
    var elem = $(this); 
    _gaq.push(['_trackEvent', 'download', elem.text()]); 
    var form = this.form; 
    form.target = '_self'; 
    setTimeout(function(){ form.submit(); }, 150); 
    e.preventDefault(); 

});

+0

Thx并祝贺你的4k! –