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
для перехода к ссылке после того, как событие было записано?
Ответы
Ответ 1
Как насчет решения из этого answer?
// 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; });
Ответ 2
Использовать Google Analytics hitCallback
Вы можете настроить пользовательский обратный вызов для объекта трекера с помощью:
_gaq.push(['_set', 'hitCallback', function(){}]);
Я описал код для него немного более подробно: Отслеживать событие в Google Analytics после нажатия кнопки отправки
Ответ 3
Я столкнулся с аналогичной проблемой с отслеживанием внешних ссылок. Мое спасение использовало OnMouseDown
событие вместо OnClick
.