33

在 chrome 调试日志中查看站点页面时会出现以下消息。

未捕获的 ReferenceError:_gaq 未定义

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

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

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

非常感谢任何帮助。

4

5 回答 5

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>

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

于 2014-03-10T18:14:36.007 回答
16

关于异步片段的位置,GA 帮助页面说 -

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

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

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

<button onclick="var _gaq = _gaq || []; _gaq.push(['_trackEvent', 'button3', 'clicked'])"/><button>
于 2013-02-28T23:41:02.260 回答
11

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

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX-X']);
_gaq.push(['_trackPageview']);
于 2013-04-23T19:46:12.280 回答
4

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

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

这是一个例子:

ga('send', {
  hitType: 'event',
  eventCategory: 'Video',
  eventAction: 'play',
  eventLabel: 'cats.mp4'
});
于 2015-11-21T17:47:23.403 回答
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>
于 2014-05-09T15:17:45.983 回答