Невозможно заставить Google Analytics работать на моей странице, которая использует AJAX для загрузки своих страниц. - PullRequest
2 голосов
/ 15 января 2010

Итак, после сильной головной боли, я заставил свой сайт загружать все страницы через ajax.Причина в том, что клиент хотел, чтобы он работал точно так же, как и на его старом флеш-сайте. Да.

В любом случае, все было просто замечательно, но затем я добавил трекеры Google Analytics, и он больше не загружается!

Вот как я делаю ajax:

$("li.home a").click (function() {       
    ajax_load("index.php",this);
    return false;
});
$("li.location a").click (function() {
    ajax_load("location.php",this);
    return false;
});

etc...

function ajax_load(page,element) {

    // deals with making an element active in left nav
    $('#mainnav').find('li.active').removeClass('active');
    $(element).parent().addClass('active');

    // empty the wrapper, then add new content with a fade effect
    $("#wrapper").empty();
    $("#wrapper").css({'display' : 'none'})
    $.ajax({
        type: "POST",
        url: page,
        success: function(msg){            
            $("#wrapper").append(msg);
            $("#wrapper").fadeIn();
        }
    });

    // set the page hash, so we can add these pages to favorites if wanted
    var strLen = page.length;
    page = page.slice(0,strLen-4);
    window.location.hash = page;
}

Все отдельные страницы - это файлы php. И когда они загружаются, в начале файла проверяется, чтобы увидетьесли это запрос AJAX.Если это так ... он пропускает заголовок и навигацию только к содержимому, а затем пропускает нижний колонтитул.это позволяет ему работать, когда javascript отключен.

Итак, чтобы заставить Google Analytics работать при загрузке страниц AJAX, я подумал, что могу просто вставить код отслеживания Google в область, которая загружается, когда это AJAX.запрос ...

Ну, это не работает!На данный момент единственной страницей с кодом отслеживания Google Analytics является страница планов этажей, чтобы вы могли видеть, что происходит.Любые указатели будут с благодарностью!

вот код отслеживания Google, который я использую:

    <script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-11737385-5");
pageTracker._trackPageview();
} catch(err) {}</script>

// ОБНОВЛЕНИЕ //

Я считаю, что это должно быть сделано, спасибо, Пекка!

    $.ajax({
    type: "POST",
    url: page,
    success: function(msg){            
        $("#wrapper").append(msg);
        $("#wrapper").fadeIn();
        pageTracker._trackPageview(page);
    }

1 Ответ

6 голосов
/ 15 января 2010

Есть функция, которую вы можете использовать, _trackPageview. См. руководство по Google Analytics :

Как отслеживать приложения AJAX ?

С типичной HTML-страницей вы можете использовать URL для различения нескольких просмотров страниц. Но в приложении AJAX запрос к серверу выполняется без изменения URL-адреса страницы, что затрудняет отслеживание.

Однако, вызвав функцию _trackPageview, вы можете назначить имя файла страницы любому событию AJAX. Как правило, это делается как часть функции onreadystatechange после того, как данные возвращены и все обновления страницы выполнены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...