Как отслеживать якорные теги с помощью Google Analytics

Я пытаюсь отслеживать клики через Google Analytics, которые не приводят к новому запросу. В частности, нажимает на вкладки, которые создаются с помощью jQuery UI вкладки виджет. Я использую более старую версию кода ("urchin tracker") и пытаюсь регистрировать клики следующим образом:

$('.ui-tabs-nav li a').click(function() {
    val = "/tab/" + $(this).attr('href');

    // when uncommented, the following line reports, for example:
    //   /tab/#main
    // as expected.
    // console.log(val);

    res = urchinTracker(val);
});

тот же метод работает в другом случае, единственным существенным отличием которого, насколько я могу судить, является отсутствие символа хэша (#) в строке. Это символ не допускается в строка отслеживается urchinTracker(), или может быть какая-то другая причина (кроме того, что никто не нажал на ссылки!)?

6 ответов


по умолчанию Google Analytics отключает отслеживание якорь теги. Чтобы включить его для устаревшего кода отслеживания, используйте следующий формат:

_uanchor = 1;
urchinTracker(val);

установка значения переменной _uanchor является эквивалентом вызова метода _setAllowAnchor при использовании последней базы кода GA. (Вы найдете подробное сравнение в Руководство По Миграции Кода Отслеживания Google Analytics - эта ссылка устарела).

метод _setAllowAnchor описан на the Справочный Сайт Google.


короче говоря, Google Analytics не может отслеживать ссылки на странице, содержащие символ"#". Щелчок по индексу.html#foo рассматривается просто как щелчок по индексу.html, со всем, что после " # " игнорируется.

вы можете рассмотреть возможность избежать символа"#":

$('.ui-tabs-nav li a').click(function() {
    val = new String("/tab/" + $(this).attr('href')).replace('#', '&');

    // when uncommented, the following line reports, for example:
    //   /tab/#main
    // as expected.
    // console.log(val);

    res = urchinTracker(val);
});

в вашем примере это будет записывать представление страницы для /tab/?main, который должен отлично работать с Google Analytics.


если вы хотите отслеживать внутристраничные щелчки привязки, следующее будет работать глобально:

window.onhashchange = function() {
  _gaq.push(['_trackPageview', location.pathname + location.search + location.hash]);
}

остерегайтесь, если у вас есть некоторые конкретные onclick обработчики, такие как

 $('#someid a').click(function(event){
   event.preventDefault();
   var target = $(this).attr('href');
   // some more clever stuff
 });

вам нужно будет вручную добавить хэш, чтобы вызвать onhashchange

 $('#someid a').click(function(event){
   event.preventDefault();
   var target = $(this).attr('href');
   // triggers onhashchange
   location.hash = target;
   // some more clever stuff
 });

звучит, как вы хотите Отслеживание Событий Google Analytics примеры используют onclick= "" мусор, но я уверен,что вы могли бы связать их с событиями щелчка jQuery.


  1. Я попытался с помощью _uanchor = 1; метод. Это не работа. Причина, по которой он не работает, заключается в том, что он предназначен для отправки параметров Google Analytics в качестве хэш-значений, а не send код хэш-значение.

    из руководства цитирует в ответе Терека Габора установка _uanchor To one имеет следующие эффекты:

    если включено, использует # вместо ? отделить запрос stem из строки запроса

    это в разделе "Отслеживание кампании".

  2. ответ Роба Найта работает отлично, но я сделал небольшую модификацию. В псевдо-коде:

    if (href contains ?) {
    href = href.replace('#', '&');
    } else {
    href = href.replace('#', '?');
    }
    

не уверен, что это действительно имеет значение для GA, чтобы иметь URL, как foo.html&bar=baz но мне просто показалось, что это чище.