2012-01-13 3 views
12

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

Как интегрировать Google Analytics на сайт jQueryMobile, чтобы отслеживать все клики по страницам?

+1

[Вот обновленный ответ с правильной привязкой события, используя jQuery Mobile 1.3] (http://stackoverflow.com/a/18736218/315024) – Walf

ответ

15

Jon Gales написал отличную статью об этом.

http://www.jongales.com/blog/2011/01/10/google-analytics-and-jquery-mobile/

Вот код, он рекомендует использовать:

$('[data-role=page]').live('pageshow', function (event, ui) { 
    try { 
     _gaq.push(['_setAccount', 'YOUR_GA_ID']); 

     hash = location.hash; 

     if (hash) { 
      _gaq.push(['_trackPageview', hash.substr(1)]); 
     } else { 
      _gaq.push(['_trackPageview']); 
     } 
    } catch(err) { 

    } 

}); 

Update

С live теперь осуждается вы должны использовать on событие вместо этого, если you're с помощью JQuery 1.7 +. http://api.jquery.com/on/

+3

Вам не нужен вызов _setAccount. Если у вас уже есть это на первой странице. Вы можете вызвать многократное время _trackPageview после _setAccount – Eduardo

+2

jQuery Mobile 1.0 Final упакован с jQuery Core 1.6.4, потому что обновление до 1.7+ может вызвать проблемы (я видел проблемы с белым экраном с Blackberry и 1.7). Я приношу этот bceuase '.on()', слишком новый для использования с jQuery Mobile 1.0 Final, однако вы можете использовать '.delegate()' в той же усадьбе. – Jasper

+0

Обратите внимание, что вы должны привязать это событие до запуска jQuery Mobile, иначе он вообще не будет работать (поместите его в свой обработчик mobileinit). И да, вы должны только вызывать _SetAccount один раз, но он также работает так. –

4

Для тех, кто имеет проблемы с PhoneGap и Google Analytics:

код Google использует куки и он не работает с файлом: // URLs которым является то, что использует PhoneGap. Команда Pokki сделала a good implementation, где вместо cookie используется localStorage. Я сделал вилку на GitHub, чтобы устранить необходимость в Pokki, так вот это решение, которое работает с PhoneGap в виде отдельной библиотеки

https://github.com/ggendre/GALocalStorage

надеюсь, что это поможет кому-то еще :)

Смежные вопросы