Отслеживание исходящих ссылок с помощью Google Analytics

Google Analytics предоставляет широкие возможности по сбору и анализу статистики сайта, но, способ отслеживания исходящих ссылок, предлагаемый в справочном центре…

<a href="http://www.primer.ru" onClick="javascript:urchinTracker('/outgoing/primer_ru');">

…мягко говоря, не очень удобен.

Поскольку сама возможность очень интересная, я решил все-таки использовать ее и при этом обойтись без прикрепления onclick к каждой внешней ссылке.


План


Можно, конечно, пройти по всем ссылкам на странице с помощью JavaScript и прикрепить к каждой соответствующий обработчик onclick, но это некрасиво, не оптимально и не работает, если посетитель кликнет не на саму ссылку на вложенную в нее картинку. К этому случаю очень подходит техника делегации событий, достаточно будет одного обработчика onclick прикрепленного к элементу document.

Скрипт


Для упрощения скрипта использовалась библиотека JQuery, но поклонники других фреймворков смогут без труда его адаптировать.
<code>//функция определяющая является ли ссылка внешней
function isLinkExternal(link)
{
    var r = new RegExp('^https?://(?:www.)?'
        + location.host.replace(/^www./, ''));
    return !r.test(link);
}

$(document).ready(function () {
    
    $(document).bind('click', function(e) {
        //получаем элемент с которым произошло событие
        var target = (window.event) ? e.srcElement : e.target; 
        
        //клик мог быть и на вложенном в ссылку элементе
        //нужно подняться до самой ссылки
        while (target)
        {
            if (target.href) break;
            target = target.parentNode;
        }

        if (!target || !isLinkExternal(target.href))
            return true;

        //отслеживаем ссылки в виде /outgoing/http/habrahabr.ru
        var link = target.href;
        link = '/outgoing/' + link.replace(/:\/\//, '/');
        urchinTracker(link);
    });
    
    //в качестве бонуса отслеживаем клики на ссылках RSS
    //хотя полной статистики по подписавшимся нам это не даст
    $('#feed-link').bind('click',
        function() { urchinTracker('/feed/'); });
    $('#fullfeed-link').bind('click',
        function() { urchinTracker('/fullfeed/'); });
    $('#commentsfeed-link').bind('click',
        function() { urchinTracker('/commentsfeed/'); });
});</code>


Скрипт разработан совместными усилиями на форуме htmlbook.ru

Другие приемы использования Google Analytics, можно найти на сайте Design For Masters в статье Продвинутое использование Google Analytics
+24
6 сентября 2007, 11:34
41
Jenek 19,6

комментарии (16)

0
fog #
Спасибо, интересная вещица.
0
pietrovich #
моя бы попробовала использовать для тех же целей более легковесный behaviour посредством которого и прикрутил бы обработчики onClick и "//в качестве бонуса отслеживаем клики на ссылках RSS"
0
Jenek #
Какой фреймворк использовать это дело личное, и скорее всего это решение будет зависеть от того, что уже используется в проекте.
0
silverwind #
behaviour (поведение) — не фреймворк, а добавление js-функционала с помощью "стилей" css.
0
Jenek #
понятно, пойду по ссылке почитаю
0
silverwind #
А... извиняй, таки ты прав был, этот "behaviour" таки фреймворк (или мини-фреймворк скорее :) так что "какой фреймоврк использовать это дело личное" — таки так...
0
mastergenius #
А разве его поддерживают какие-нибудь браузеры, кроме ie?
0
Jenek #
:) а почему вы мне это говорите я его первый раз вижу, этот behavior

но это не тот behavior, что работает только в ie, это скрипт который навешивает события по css селекторам
0
pietrovich #
именно. навешивает по CSS селекторам.
собственно выбор в его пользу был только потому что я не использую jQuery. естественно там где он используется уместнее использовать готовое решение, а там где нет можно попробовать использовать специальную "рогатку" вместо ПЗРК :)
0
pietrovich #
моя не встречала проблем с другими броузерами...
–14
Smad #
Прывэт, коллэги!
Статья довольно интэрэсная. ........ЖЖЁМ!
0
rm_rf #
вообще-то, jQuery позволяет использовать css-селекторы, это одна из его базовых фишек.
собсно jQuery('сюда писать селектор')
0
Jenek #
Я знаю, к примеру, $('#feed-link') тоже селектор

Если вы о комментариях, то мы просто обсуждали альтернативную библиотеку behavior, все функции которой заключаются в навешивании событий на селекторы.
0
Lain_13 #
А толку обрабатывать статистику со стороны браузера, если часть (хоть пока и малая) пользователей просто заблокирует гуглоаналитику к всемирно известной бабушке?
Может лучше (хоть это и уродство фанстастическое) сделать так, что бы любая информация по любой ссылке на сайте выдавалась через промежуточный файл на php (или любом другом языке) который будет самостоятельно дергать гуглоаналитику и выдавать вместо себя запрашиваемую страницу.
Или так аналитика работать не будет? Я в этом вопросе не разбираюсь.
з.ы. А гугланалистик я у себя заблокировал, что б не дёргал инет лишний раз
+1
Jenek #
Я не думаю, что пользователи с заблокированной аналитикой составляют сколь либо заметный процент, и статистика будет достаточно достоверной, я и так не думаю, что она абсолютно точная. Блокировка аналитики не даст никаких серьезных плюсов поэтому массовым явлением не станет.

Через промежуточный файл тоже можно сделать, но через такие ссылки не передается PR поэтому они не всегда приемлемы.

Хотя есть вариант когда на страницах обычные ссылки, а при клике на ссылке JavaScript отправляет через серверный скрипт который и засчитывает переход, но в таком случае с Google Analytics будут проблемы, хотя и вполне решаемые так как файл со скриптами аналитики можно хранить у себя на сервере и редактировать так чтобы работал в таком варианте.

Так, что выход всегда найдется, а пока можно об этом даже не задумываться.
0
Smad #
Салют.
Вот интересно -12, это что за простой призыв?
Я же сказал, что довольно-таки привлекательная статья. Другого мнения быть не может, и поставьте её на первое место. Люди должны знать правду! :)
А что касается баллов, я не думаю, что за отжеги можно банить. Причем так жестоко.
Привлекательная статейка.
И не спорьте со мной!:)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.