Использование Ajax с Google Analytics - PullRequest
1 голос
/ 21 ноября 2010

Я создаю сайт, на котором основной контент изменяется с помощью вызовов Ajax, и я хочу добавить код Google Analytics (используя метод async _gaq).Я понимаю, что нужно отправить событие _trackPageview с URI в _gaq.Есть два способа сделать это:

1) Использовать свойство onclick (или связывать события с JQuery) в моих ссылках и формах, например: onlink = "_ gaq.push (....)"

2) Поскольку мой ajax-код может обрабатывать сценарии при получении данных из запроса ajax, я могу добавить вызов _gaq.push (...) в такой фрагмент сценария при предоставлении страницы с ajaxed.

Используя первый вариант, я получаю более чистый и лаконичный код.Однако недостатки заключаются в том, что я должен помнить, что нужно вставлять ВСЕ ссылки и формировать аналитический код, и если я использую его в форме с проверкой JS, щелчок анализируется GA, даже если проверка не удалась.

Второй вариант выглядит менее чистым, но решает вышеуказанные проблемы.У меня может быть один код GA, который просто проверяет, обслуживаем ли мы ajax или обычные страницы, и выводит соответствующий фрагмент JS.Кроме того, отправка формы регистрируется только тогда, когда форма действительно отправлена.

Буду признателен за любые мысли или комментарии по этому поводу.Возможно, есть еще соображения или способы сделать это?

Спасибо, Ярон

Ответы [ 2 ]

4 голосов
/ 31 августа 2011

Есть несколько разумных способов сделать это, если вы используете jQuery.

Одна из возможностей - привязка к событию ajaxSuccess

$(document).ajaxSuccess(function(e, xhr, opt){
  _gaq.push(['_trackPageview', opt.url]);
});

Затем все вызовы jQuery ajax будут запускать это событие, и он будет выдавать URL, запрошенный вами через Ajax, на _gaq.

Имейте в виду, что он будет выдвигать URL именно так, как вы просили. Так что если вы звоните:

$.ajax('http://www.mydomain.com/path')

http://www.mydomain.com/path будет вытолкнут к _gaq. Вероятно, это не то, что вы хотите. Так что лучше позвонить .ajax так:

$.ajax('/path');

Теперь это только /path отправлено в _gaq.

Если вам действительно нужно использовать весь домен, лучше очистить URL-адрес перед его отправкой в ​​Google Analytics.

1 голос
/ 31 августа 2011

Я публикую это как новый ответ, поскольку это другой подход.

Если вы не хотите привязываться к глобальному событию ajaxSucess, вы можете сделать это вручную, используя deferreds.

$.ajax('/page').done(function(){
  _gaq.push(['_trackPageview', '/page']);
}).done(function(response){
  // Do something with the response
});

Плохо то, что завершенный обратный вызов не получает URL.Таким образом, вы будете печатать URL дважды.Поскольку вы, вероятно, собираетесь сделать это пару раз, может быть полезно создать вспомогательную функцию:

function GaAjax(url){
  return (function(u){
    return $.ajax(u).done(function(){
      _gaq.push(['_trackPageview', u]);
    });
  })(url);
}

Теперь вы можете вызывать это вместо jQuery .ajax, когда вы делаетезапрос Ajax, который следует отправить в Google Analytics.

GaAjax('/page').done(function(){
  // Do something with the response
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...