Пользовательские события не отображаются, даже если они отправлены

При загрузке страницы я загружаю Google Analytics через следующий фрагмент кода:

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("UA-XXXXXXXX-X");
pageTracker._trackPageview();
} catch(err) {}
</script>

И я использую следующий код для запуска события (после загрузки страницы):

_gaq.push(['_trackEvent', 'test category',  'test action']);

Стандартная информация отслеживается, но НИКАКИХ СОБЫТИЙ. Я знаю, что все события отправляются в Google Analytics, потому что каждый раз, когда событие запускается, HTTP-запрос GET отправляется по следующему URL-адресу:

http://www.google-analytics.com/__utm.gif?.....more data here

Что мне нужно сделать, чтобы пользовательские события в Google Analytics работали?

Заранее спасибо.


person Fredrik    schedule 30.10.2013    source источник


Ответы (1)


Похоже, вы используете старую, «традиционную» реализацию Google Analytics.

Я настоятельно рекомендую вам обновить хотя бы асинхронный фрагмент, где поддерживается синтаксис для _gaq.push. В настоящее время вы пытаетесь передать событие, используя новый синтаксис, в старую реализацию, которая использует другой синтаксис.

Различия между ними подробно описаны здесь: https://developers.google.com/analytics/devguides/collection/gajs/asyncMigrationExamples

Короче говоря, вы используете синтаксис для gat/pageTracker, где более новый асинхронный использует gaq.

Пожалуйста, просмотрите этот код, который я скопировал по ссылке выше:

_gaq.push(['_setAccount', 'UA-XXXXX-X']); 
_gaq.push(['_trackPageview']);
...
<a onclick="_gaq.push(['_trackEvent', 'category', 'action', 'opt_label', opt_value]);">click me</a>

К тому, что вы используете сейчас, старый синтаксис:

var pageTracker = _gat._getTracker('UA-XXXXX-X');
pageTracker._trackPageview();
...
<a onclick="pageTracker._trackEvent('category', 'action', 'opt_label', opt_value);">click me</a>

Как видите, вы пытаетесь отправить событие в старый ga.js, используя новый синтаксис ga.js. Я настоятельно рекомендую использовать более новый ga.js, который загружается асинхронно. Асинхронно это означает, что javascript загружается во время загрузки веб-страницы, чего не делает старый ga.js.

Это пример реализации нового ga.js, и его следует реализовать прямо перед закрытием </head>:

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

Если вы реализуете приведенное выше предложение, значит, вы используете более новый ga.js, и синтаксис _gaq.push должен работать. Попробуйте!

И если вы не знаете, что означает асинхронная часть, краткое пояснение:

Последняя версия кода отслеживания Analytics предлагает улучшенный способ отслеживания посетителей веб-сайта с помощью Google Analytics. Он использует поддержку браузером асинхронного JavaScript для повышения скорости загрузки кода отслеживания. С последней версией кода отслеживания вы также можете разместить фрагмент Google Analytics выше на странице, не задерживая отображение последующего контента.

Он продолжает загружать другие элементы вашей веб-страницы отдельно друг от друга, вместо того, чтобы ждать завершения 1 перед загрузкой 2, затем 3 и т. д.

person MrSponge    schedule 30.10.2013