Google Analytics Async: обратный вызов отслеживания событий? - PullRequest
13 голосов
/ 16 ноября 2011

Я хочу использовать отслеживание событий для записи кликов по определенному типу ссылки на другой сайт.Я использую 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 для перехода по ссылке после событие было записано?

Ответы [ 3 ]

12 голосов
/ 17 сентября 2012

Использовать Google Analytics hitCallback

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

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

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

9 голосов
/ 16 ноября 2011

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

  // 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; });
1 голос
/ 17 ноября 2011

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

...