Это для новейшего универсального кода отслеживания.
Так что недавно мне пришлось пересмотреть свой собственный ответ для нового проекта.Я заметил некоторые проблемы, которые я должен устранить.
Чтобы отправить просмотр страницы программным путем, вы хотите отправить только путь и запрос, например.для http://example.com/path/to/resource?param=1
мы отправим /path/to/resource?param=1
.
Некоторые SPA используют HashBangs (#!
) для своих URL.Таким образом, мы должны отправить что-нибудь после Hashbang.Например, http://example.com#!path/to/resource
мы отправим /path/to/resource?param=1
.
Более ранняя версия моего решения была ошибочной и потерпела неудачу для всех URL, которые имели хэш в URL.Кроме того, поскольку я использовал плагин jQuery + History.js, мое решение было одновременно прослушивать statechange
.
Используйте этот новый код для отправки просмотра страницы.Он более устойчив и обслуживает как хэш-банг, так и историю.
var loc = window.location,
hashbang = "#!",
bangIndex = location.href.indexOf(hashbang),
page = bangIndex != -1 ? loc.href.substring(bangIndex).replace(hashbang, "/") : loc.pathname + loc.search;
ga('send', 'pageview', page);
Если вы не используете хэш-банг специально, просто измените hashbang = "#!",
для соответствия, например, hashbang = "#@",
Вторая часть этого - обнаружение изменения URL.Для этого вам нужно узнать из документов какой библиотеки вы используете.
Для плагина jQuery + History.js приведенный ниже код работает
$(window).on('statechange', function() {
//put code here
});
Более подробную информацию можно получитьнайдено в https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications
$(window).on('statechange', function() {
var loc = window.location,
page = loc.hash ? loc.hash.substring(1) : loc.pathname + loc.search;
ga('send', 'pageview', page);
});