如何使用谷歌分析trackEvent?

时间:2012-06-13 22:04:01

标签: google-analytics

我刚刚参加了一个我的同事过去工作的项目。我看到以下代码。

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', "my id"]);
  _gaq.push(['_trackPageview']);

  _gaq.push(['_trackEvent', 'app', 'DEACTIVATE'])

问题是,我在google analytics页面下看不到任何用户事件。我查看了Content-> Events。

我用Google搜索,然后发现大多数人都使用

pageTracker = _gat._getTracker("id")
pageTracker._trackEvent("app","DEACTIVATE"); 

哪一个是正确的?我喜欢先自己测试,但应用程序已经上线,GA延迟了一天。我想先确认一下。

更新:进一步深入研究后,我发现我应该使用第一种方法。但是,除非传递值,否则它仍然无效。

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', "my id"]);
  _gaq.push(['_trackPageview']);

  _gaq.push(['_trackEvent', 'app', 'DEACTIVATE',""])   // must pass value even if it's empty

5 个答案:

答案 0 :(得分:2)

如果您使用的是异步版本 - 并且通常没有理由不这样做,那么您应该始终使用

_gaq.push(...) - (其中_gaq只是一个javascript数组,而push()只是添加到最后)

此阵列的重点在于,您可以在GA脚本加载之前存储事件,无论是trackEvent事件还是trackPageView事件 - 这就是为什么它被称为异步跟踪。脚本加载后,它会处理数组中的所有内容。

如果你在google脚本加载完之后页面上有javascript将某些内容推送到此数组,那么一旦加载该事件,它仍会被跟踪。它也适用于脚本加载后。

我假设(但尚未验证这一点) - 一旦加载了脚本,它就会将_gaq转换为可观察的数组 - 或者只是一个直接的方法调用,这样一旦你再向它推送任何东西它就可以立即被处理。

我建议使用Google发布的Chrome插件Google Analytics Debugger,以实时查看发送的内容。 Also this is good用于一般GA调试tipe。

答案 1 :(得分:0)

我认为第一部分是正确的。确保您可以使用http://www.fiddler2.com/fiddler2/查看事件是否已引发或安装Google Analytic debugger

答案 2 :(得分:0)

_gaq是Google Analytics异步页面跟踪全局对象 _gat是Google的传统页面跟踪对象。

根据Google的文档,不推荐使用_gat(帐户)方法调用。

有关详细信息,请参阅https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApi_gat

另请参阅https://developers.google.com/analytics/devguides/collection/gajs/了解有关Google Analytics的更多信息。

以下是Google的基本异步跟踪示例:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_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);
})();

您是否在网页的Javascript中的任何位置看到了上述匿名函数?

以下代码适用于我。 我注意到在您发布的代码中,您在事件跟踪调用中缺少一个尾随分号。我最初复制了您的代码,导致JavaScript异常,通过在行上放置一个尾随分号来纠正

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-######-1']);
_gaq.push(['_trackPageview']);

_gaq.push(['_trackEvent', 'app', 'DEACTIVATE']);

(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);
})();

同样,上面的代码对我有用。

祝你好运!

答案 3 :(得分:0)

对于第二种方法,您希望使用_getTrackerByName代替_getTracker

pageTracker = _gat._getTrackerByName();
pageTracker._trackEvent("app","DEACTIVATE"); 

无论哪种方式都有效,但首先是首选。

您是在实时服务器上还是在本地主机/内部网计算机上进行测试?如果您的服务器不在完全限定的域名中,Google Analytics将不会发送跟踪请求(__ utm.gif) - 请参阅Google Analytics GIF request not sent

答案 4 :(得分:0)

如果您不想一直部署应用程序,并希望更灵活,更快,可以使用SiteApps中的此应用程序,如下所示:

http://siteapps.com/app/easy_ga_track_event-459

设置简单。