【问题标题】:Access Google Analytics Universal Analytics in external JS files在外部 JS 文件中访问 Google Analytics Universal Analytics
【发布时间】:2014-01-03 23:36:47
【问题描述】:

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

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

【问题讨论】:

    标签: javascript google-analytics


    【解决方案1】:

    Google Analytics sn-p 中的立即调用函数表达式处理该对象的创建。在 sn-p 中,您会看到以下内容:

    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');
    

    在未修饰的 JavaScript 中,sn-p 如下所示:

    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 中找到。

    【讨论】:

    • 呸。打败我。基本上,您可以继续构建一个名为ga 的函数,它只是将参数集合推送到函数上的一个属性,该属性是一个名为q 的数组。 window.ga = function () { ga.q.push(arguments); }; ga.q = []; ga("a", "b", 32); ga("c", "d", function () { return "orange"; });。此外,很棒的是,他们首先使用了“isogram”,因为这正是缩小器需要做的......第二,他们设法让“irq”成为分析跟踪的中断链,并“irl”当前时间。那些是我想和他们一起喝酒的书呆子。
    【解决方案2】:

    您不需要重新定义 ga 函数,因为它已经在跟踪 sn-p 中定义。您所要做的就是在您的外部文件中使用ga 对象,一切顺利。 ga 已经是一个全局对象,所以不需要限定它的范围。

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

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

    如果您有可能命中无法通过并且无法到达您的帐户。

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

    【讨论】:

    • 当我阅读它时,问题是在定义跟踪 sn-p 之前询问。 (即“ga”不存在)。
    • @Mark,它没有说在跟踪 sn-p 之前,它说在它加载之前是完全不同的。如果您将上面的代码放在跟踪 sn-p 之后并且它在加载 analytics.js 文件之前运行是有效的。
    【解决方案3】:

    这是我在外部 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;
         }
       });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多