Как заставить Google Analytics отслеживать страницы, названные AJAX?
Я вызываю страницу на моем веб-сайте, используя AJAX, но по какой-то причине Google Analytics не регистрирует посещение страницы. Нужно ли что-то делать, чтобы заставить его регистрировать страницы, запускаемые AJAX?
Я использую последний универсальный код аналитики следующим образом:
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXXX-1', 'mywebsite.ext');
ga('send', 'pageview');
</script>
Я использую JQuery AJAX-вызов к странице, содержащей приведенный выше фрагмент, следующим образом:
<script>
//<![CDATA[
$(document).ready(function(){
$.ajax({
url : "http://www.mywebsite.ext",
type: "GET",
async: false,
data : { fromajax : "y" },
success: function(data, textStatus, jqXHR)
{
// alert("success - Data: " + data + "\ntextStatus: " + textStatus);
},
error: function (jqXHR, textStatus, errorThrown)
{
alert("error \ntextStatus: " + textStatus + "\nerrorThrown: " + errorThrown + "\njqXHR: " + jqXHR);
}
});
});
//]]>
Я уверен, что страница вызывается, так как у меня есть некоторые записи в журнале записи в базу данных. Я также знаю, что код Google Analytics работает, так как я тестирую его, используя обзор в реальном времени.
Итак, подведем итог: у меня есть страница, которая вызывает http://www.mywebsite.ext с использованием AJAX, а страница назначения (http://www.mywebsite.ext) содержит код Universal Analytics, который не отображается для отслеживания страницы. Если вы посещаете страницу в обычном режиме из вашего браузера, страница отслеживается нормально.
С тех пор из потока я обнаружил, что могу вызывать функцию "ga" с виртуальной папкой. Поэтому я покончил с вызовом AJAX и вместо этого изменил Universal Analytics следующим образом:
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXXX-1', 'mywebsite.ext');
ga('send', 'pageview', '/localfolder/page');
ga('send', 'pageview');
</script>
У меня сейчас проблема в том, что он вызывает ga ('send', 'pageview', '/localfolder/page'); но не ga ("отправить", "просмотр страницы");
Но я понимаю, что между событиями существует минимальный интервал: отслеживание событий в Google Analytics - минимальный интервал между событиями
Поэтому я добавил setTimeout (function() {}, 2000); между событиями и последним событием до сих пор не вызывается. Я даже пошел до 9 секунд.
Ответы
Ответ 1
Старый стандарт для загрузки Google Analytics был асинхронным методом:
var _gaq=[["_setAccount","UA-#######-#"],["_trackPageview"]];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";
s.parentNode.insertBefore(g,s)}(document,"script"));
Этот бит отслеживает начальную загрузку страницы, но не последующие вызовы AJAX. В любое время, когда вы хотите отслеживать загрузку страницы, добавьте следующий фрагмент:
// "_trackEvent" is the pageview event,
_gaq.push(['_trackPageview', '/some-page']);
_trackPageview используется снова, но на этот раз мы предоставляем URL загруженного адреса AJAX. Использование небольшого фрагмента JavaScript выше позволяет вам отслеживать просмотры страниц так же, как если бы вся страница была перезагружена. Я бы порекомендовал использовать этот фрагмент с плагином MooTools History.
В сочетании с Ajax ваш код должен быть похож на это:
jQuery(document).ajaxComplete(function(e, xhr, settings){
var d = document.location.pathname + document.location.search + document.location.hash;
_gaq.push(['_trackPageview', d]);
});
Если вы хотите использовать код Universal Analytics, синтаксис для виртуальных загрузок страниц будет другим.
Это синтаксис для отслеживания виртуальных просмотров страниц в UA:
ga(‘send, ‘pageview, ‘path to your virtual page);
Примеры:
<a href="http://www.example.com/gu/dw/seo-beginners-guide.pdf" onClick="ga(‘send, ‘pageview, ‘/virtual/guides/download/seo-beginners-guide.pdf);"> Download SEO Beginners Guide</a>
Поэтому, когда пользователь нажимает на ссылку "Скачать руководство для начинающих SEO", UA создает виртуальный просмотр страницы под названием "/virtual/guides/download/seo-beginners-guide.pdf.
Источники:
http://davidwalsh.name/ajax-analytics
fooobar.com/questions/381443/...
http://www.optimizesmart.com/event-tracking-guide-google-analytics-simplified-version/
Ответ 2
Html
<a class="ajax-load" href="home.html" >Home</a>
Javascript
jQuery(document).ready(function($) {
$(".ajax-load").click(function(event) {
event.preventDefault();
var href = $(this).attr("href");
$.ajax({
url: href,
type: 'post',
dataType: 'html',
})
.done(function(response) {
$(".somediv").html(response);
// now send page view
ga('send','pageview','/virtual/....');
})
.fail(function() {
// show error dialog
})
});
});
Ответ 3
У вас могут быть проблемы, поскольку те, кто получает Ajax, не ожидают или не обрабатывают Javascript.
Google имеет этот протокол в качестве решения:
POST/сбор HTTP/1.1
Хост: www.google-analytics.com
payload_datap >
подробности здесь:
https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#proxy-server-tracking
Вам понадобится использовать метод POST или GET с использованием языка сценариев. Если вы придумаете ответ и рабочее решение, сообщите мне! Я делаю все, что в моих силах, чтобы заставить это работать.
Ответ 4
Этот ответ только для новых фрагментов GA
Ответ с поправкой не сработал для меня, вот слегка измененная версия этого ответа, которая работает для меня
if ("ga" in window) {
tracker = ga.getAll()[0];
if (tracker) {
tracker.set("page", '/some-page');
tracker.send("pageview");
}
}
Ответ 5
Я рекомендую использовать другую службу для аналитики AJAX: http://discrete.li/
Он автоматически дает вам статистику по всем запросам ajax, так же как Google Analytics автоматически дает вам статистику страниц. Нет необходимости вручную вызывать службу для каждой функции успеха. Кроме того, он дает вам информацию об ошибках, латентности и полных журналах полезной нагрузки.