在外部JS文件中访问Google Analytics Universal Analytics

时间:2014-01-03 23:36:48

标签: javascript google-analytics

在旧版Google Analytics中,您只需在JavaScript文件的顶部添加var _gaq = _gaq || [];,这样就可以在GA完全加载之前推送事件和事务。

使用Universal Analytics,您不再使用.push(),那么在外部文件中创建ga对象的正确方法是什么,其中Google Analytics可能尚未加载,但您需要推送事件和交易?

3 个答案:

答案 0 :(得分:10)

Google Analytics摘要中的“立即调用的函数表达式”处理该对象的创建。在代码段中,您会看到以下内容:

i[r] = i[r] || function() {
    (i[r].q = i[r].q || []).push(arguments)
}

我们从传递给IIFE的参数知道i = window和r =“ga”:

(function(i, s, o, g, r, a, m) {
    //...
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');

在un-uglyfied JavaScript中,代码段如下:

window['ga'] = window['ga'] || function() {
    ( window['ga'].q =  window['ga'].q || []).push(arguments)
}

因此,通过调用全局函数ga,您实际上是在创建一个充当队列的数组(如果它尚不存在)并将值推送到队列中。

在Universal Analytics中,调用此功能:

ga('create', 'UA-XXXX-Y', 'auto');

与之前版本的GA中的相同:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXX-Y']);

可以在Google dev docs中找到更多信息。

答案 1 :(得分:2)

您无需重新定义ga功能,因为它已在跟踪代码段中定义。您所要做的就是使用外部文件中的ga对象,您就可以了。 ga已经是一个全局对象,因此无需对其进行范围化。

在至少运行创建跟踪器的行之前,您也不希望将任何内容推送到ga对象中:

ga('create', 'UA-XXXX-Y', 'auto');

如果您有机会点击将无法通过,并且无法访问您的帐户。

确保您使用的任何外部文件都包含在您网站中的跟踪代码段之后,或者可能在顶部的外部文件中包含跟踪代码段。

答案 2 :(得分:2)

这是我在外部js文件中使用的内容,它似乎正在工作和跟踪。请注意,要跟踪事件内容,您可以使用GA帐户中的实时事件标签确认其有效。

我也在这里跟踪出站事件。注意:我花了2天的时间来完成此绑定事件跟踪工作。在你的onclick事件中确保你使用''这些单引号。我从这个页面https://support.google.com/analytics/answer/1136920?hl=en复制了代码,并且那里的引号实际上是一个破坏脚本的不同字符,所以从键盘输入引号。

我想将我的GA代码放在外部文件中,因为我有所有旧的经典代码,现在Google已经转移到了Universal,我不得不去每个页面对Google spinet进行更改。我认为,更聪明的是集中它,将来会有更改。

在我的头标记

<script type="text/javascript"  src="/web_resources/themes/OldsCollege/js/scripts.js" async></script>

在我的js文件中;

/*Analytics*/


    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-616432-1', 'auto');
  ga('send', 'pageview');


var trackOutboundLink = function(url, action) {
   ga('send', 'event', 'outbound-26th', action, url, {'hitCallback':
     function () {
     document.location = url;
     }
   });
}