Google Analytics Async: обратный вызов для отслеживания событий?

Я хочу использовать отслеживание событий для регистрации кликов по определенному типу ссылки на другой веб-сайт. Я использую jQuery, и код, который у меня сейчас есть:

$('a.website').click(function(event) {
    var href = $(this).attr('href');
    try {
        _gaq.push(['_trackEvent', 'website', 'click', href]);
    } catch(err) {}
});

Однако, увидев информацию о реферере с другого сайта, я не верю, что это точно отслеживает клики, вероятно, потому, что _gaq.push является асинхронным, а запрос не был получен до того, как браузер перейдет к URL-адресу и завершит любой javascript, работающий на текущая страница.

Есть ли способ определить, что функция _gaq.push успешно завершилась, поэтому я могу использовать event.preventDefault() и document.location для перехода по ссылке после записи события?


person Matt Austin    schedule 16.11.2011    source источник


Ответы (3)


Как насчет решения из этого ответа ?

  // Log a pageview to GA for a conversion
  _gaq.push(['_trackPageview', url]);
  // Push the redirect to make sure it happens AFTER we track the pageview
  _gaq.push(function() { document.location = url; });
person fliptheweb    schedule 16.11.2011
comment
Спасибо за предложение. Я собираюсь попробовать использовать это и отчитаюсь. - person Matt Austin; 16.11.2011
comment
Я собираюсь использовать этот метод. Мне не удалось собрать достаточно данных, чтобы доказать, что этот метод был более точным, но он больше не приводил к пропущенным событиям. - person Matt Austin; 28.11.2011
comment
На самом деле это не работает. Следите за своей сетевой панелью в Firebug или Webkit Inspector. Вы увидите, что __utm.gif прерывается отправкой формы и никогда не отслеживается. - person Eric D. Fields; 22.03.2012
comment
@ EricD.Fields Мне интересно, выполняется ли запрос в любом случае и отслеживание выполняется успешно, даже если __utm.gif не отправляется обратно клиенту. Является ли это возможным? - person caesarsol; 13.11.2014
comment
@caesarsol верен, не имеет значения, получит ли клиент ответ, пока сервер получил запрос. - person ColinM; 24.01.2015

Используйте Google Analytics hitCallback

Вы можете установить собственный обратный вызов для объекта трекера, используя:

_gaq.push(['_set', 'hitCallback', function(){}]);

Я описал его код более подробно здесь: Отслеживание события в Google Analytics при нажатии на отправку формы

person flu    schedule 17.09.2012
comment
Я не вижу _set метода в документации трекера Google. Не могли бы вы предоставить дополнительную информацию об этом методе? - person Matt Austin; 19.09.2012

Я столкнулся с аналогичной проблемой с отслеживанием внешних ссылок. Мое спасение заключалось в использовании события OnMouseDown вместо OnClick.

person Nikolay    schedule 17.11.2011
comment
Хотя это может повысить точность за счет «старта», я бы подумал, что этот метод все же не гарантирует, что запрос отслеживания событий был отправлен до того, как браузер перейдет в другое место? Также это может вызвать ложные показания, потому что пользователь может навести курсор мыши и затем покинуть ссылку. - person Matt Austin; 18.11.2011
comment
Вы можете попробовать протестировать его с помощью отслеживания в реальном времени в новом интерфейсе GA. У меня работает OnMouseDown, попробуйте OnMouseUp или что-то посложнее. - person Nikolay; 18.11.2011
comment
А как насчет пользователей, которые нажимают кнопку Enter вместо использования мыши? - person dotancohen; 21.04.2016