未捕获的ReferenceError:未定义_gaq(Google Analytics)

时间:2012-05-01 17:49:37

标签: google-analytics onload-event

在Chrome调试日志中查看网站页面时,会显示以下消息。

  

未捕获的ReferenceError:未定义_gaq

页面本身应该使用onload事件处理程序跟踪对象,并为Google Analytics激发_trackEvent

我最好的猜测是,ga.js文件可能无法及时加载,因此触发的onload _trackEvent未被捕获。在</body>关闭之前使用异步代码段,对象位于中间<body>

(其他一些帖子也引用了jQuery的位置,但这可能是一个红色的鲱鱼)

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:34)

https://developers.google.com/analytics/devguides/collection/gajs/开始,此代码会将您现有的“传统代码段”替换为“最新的异步版本,您应首先删除现有的跟踪代码段”。

<script type="text/javascript">

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

</script>

要查看您的活动(了解这是否有效),请在“报告”页面左侧的“实时”菜单选项下查找“活动”。

答案 1 :(得分:16)

关于异步代码段的位置,GA help page表示 -

  

将此代码段粘贴到您的网站模板页面中,以便显示   在结束</head>标记之前。

我的第一个想法是应该在页面底部加载JS以提高页面速度。但是,GA异步跟踪代码段应该加载到头部,因为它不会立即加载ga.js,并且它不会阻止页面执行。(它通过动态地将脚本标记添加到DOM来执行此操作。它在队列的后面。)

如果出于某种原因,您无法将异步代码段移动到头部,则可以自己定义_gaq,如下所示 -

<button onclick="var _gaq = _gaq || []; _gaq.push(['_trackEvent', 'button3', 'clicked'])"/><button>

答案 2 :(得分:11)

有同样的问题。您必须定义_gaq数组。只需在标题中添加Google Analytics脚本之后添加:

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

答案 3 :(得分:4)

您可以使用analytics.js的最新版本而不是ga.js

  

ga.js是一个遗留图书馆。如果您正在开始新的实施我们   建议您使用此库的最新版本analytics.js。   对于现有实现,请了解如何从ga.js迁移到   的analytics.js。

以下是一个例子:

ga('send', {
  hitType: 'event',
  eventCategory: 'Video',
  eventAction: 'play',
  eventLabel: 'cats.mp4'
});

答案 4 :(得分:0)

将跟踪代码更改为:

<script type="text/javascript">
      var gaq; 
      var _gaq = gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXX-X']);
      _gaq.push(['_setDomainName', 'yourdomain.com']);
      _gaq.push(['_setAllowLinker', true]);
       _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);
      })();

</script>