Подтвердить что ты не робот

Uncaught ReferenceError: _gaq не определен (Google Analytics)

При просмотре страницы сайта в хромовом журнале отладки появляется следующее сообщение.

Неподготовлено ReferenceError: _gaq не определен

Сама страница должна отслеживать объект с помощью обработчика событий onload и запускать _trackEvent для Google Analytics.

Мое лучшее предположение заключается в том, что, возможно, файл ga.js не загружается вовремя, и поэтому срабатывает onload _trackEvent. асинхронный фрагмент используется до закрытия </body>, а объект располагается посередине <body>.

(некоторые другие сообщения также ссылаются на позицию jQuery, но это может быть красная селедка)

любая помощь, которую высоко оценили.

4b9b3361

Ответ 1

Из 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>

Чтобы узнать, как ваши события заходят (чтобы узнать, работает ли это), найдите "События" в меню "Реальное время" в левой части страницы "Отчеты".

Ответ 2

Что касается положения асинхронного фрагмента, справочная страница GA говорит -

Вставьте этот фрагмент на страницу шаблона веб-сайта, чтобы он появился перед закрывающим тегом </head>.

Моя первая мысль заключалась в том, что JS должен быть загружен в нижней части страницы, чтобы улучшить скорость страницы. Однако фрагмент отслеживания асинхронного отслеживания GA должен быть загружен в голову, так как он не будет немедленно загружать ga.js, и он не будет блокировать выполнение страницы. (Он делает это путем динамического добавления тега script в DOM, который помещает его в конец очереди.)

Если по какой-то причине вы не можете переместить фрагмент асинхронизации в голову, вы можете определить _gaq самостоятельно, например:

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

Ответ 3

Была та же проблема. Вы должны определить массив _gaq. Просто добавьте это после своей Google Analytics script в заголовок:

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

Ответ 4

Вы можете использовать последнюю версию analytics.js вместо ga.js

ga.js - это устаревшая библиотека. Если вы начинаете новую реализацию, мы рекомендуем использовать последнюю версию этой библиотеки analytics.js. Для реализации реализаций узнайте, как перейти от ga.js к analytics.js.

Вот пример:

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

Ответ 5

Измените код отслеживания на:

<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>