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

JQuery pjax и google analytics

Я использую PJAX https://github.com/defunkt/jquery-pjax, и мне было интересно, потому что вся страница не меняет то, что было бы лучшим способом отслеживать аналитику с помощью Google Analytics?

4b9b3361

Ответ 1

РЕДАКТИРОВАТЬ: Обратите внимание, что это уже не так. См. Комментарий ниже.

Defunkts jquery-pjax фактически обработает это для вас по умолчанию (по крайней мере для аналитики Google). По сути, всякий раз, когда вызывается загрузка страницы pjax, она сообщает объекту gaq, чтобы он регистрировал новую страницу.

Используемый для этого код выглядит следующим образом:

// Google Analytics support
if ( (options.replace || options.push) && window._gaq )
_gaq.push(['_trackPageview'])

Ответ 2

Принятый ответ больше недействителен, поскольку, как заметил Ruy Diaz, это было удалено из PJAX в этом коммите.

Вот мое решение. В событии pjax: end укажите местоположение GA и отправьте просмотр страницы.

Событие pjax: end используется, потому что оно запускается как "после выполнения pjaxed link" (загрузка с сервера), так и "назад/вперед" (загрузка из кеша). См. документация pjax событий

$(document).on('pjax:end', function() {
    ga('set', 'location', window.location.href);
    ga('send', 'pageview');
});

Или используя старую версию GA

$(document).on('pjax:end', function() {
    if( window._gaq ) {
        _gaq.push(['_trackPageview', window.location.href]);
    }
});

Мне пришлось вручную установить переменную местоположения, потому что она не собирала, что она изменилась.

Ответ 3

Прочтите это http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html и http://code.google.com/apis/analytics/docs/tracking/asyncMigrationExamples.html

Функция _trackPageview Google Analytics - это функция для использования на отслеживаемых сайтах ga.js, которая позволяет отслеживать события на вашем сайте, которые не генерируют просмотр страницы. Используя JavaScript _trackPageview, вы можете назначить определенное имя файла для Flash-событий, событий JavaScript, загрузки файлов, исходящих ссылок и т.д., Например _gaq.push(['_trackPageview', '/home/landingPage']);

При успешном запросе ajax вам нужно просто указать GA "URL" на странице.

Ответ 4

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

Чтобы безопасно работать через сайт, я отправляю событие только при изменении URL-адреса. Это не фиксирует обновления, но лучше, чем отправка 3х + обращений на страницу загрузки.

href = window.location.href;

if (window.LAST_GOOGLE_ANALYTICS_LOCATION !== href) {
  window.LAST_GOOGLE_ANALYTICS_LOCATION = href;
  ga('set', 'location', href);
  ga('send', 'pageview');
  console.log("Analytics: sending hit, this is a new url: " + href);
} else {
  console.log("Analytics: not sending hit; same url as before: " + href);
}

Ответ 5

Ответ @andrewtweber почти правильный, но pjax:complete запускается только после загрузки страницы, а не на восстановленные страницы (например, с помощью кнопки "Назад" ).

Таким образом, это событие должно быть pjax:end:

$(document).on('pjax:end', function() {
    ga('send', 'pageview', window.location.href);
});

Или при использовании устаревшей версии Google Analytics:

$(document).on('pjax:end', function() {
   _gaq.push(['_trackPageview', window.location.href]);
});

Ответ 6

location.href не работает для меня, я использую:

ga('send', 'pageview', location.pathname + location.search + location.hash);