Отслеживание одностраничных приложений

Из этого руководства вы узнаете, как с помощью analytics.js отслеживать активность на сайтах с динамически загружаемым контентом (без традиционной полной загрузки страницы).

Обзор

Одностраничное приложение (SPA) – это веб-приложение или сайт, в котором все ресурсы, необходимые для переходов между разделами сайта, загружаются вместе с первой страницей. В дальнейшем любой необходимый контент загружается динамически. Такое приложение может обновлять URL в адресной строке браузера, имитируя переходы между страницами, однако запрос другой полной страницы при этом не выполняется.

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

Отслеживание действий на странице

Когда приложение динамически подгружает контент и обновляет URL в адресной строке, данные, сохраненные в объекте отслеживания, также должны обновляться.

Чтобы обновить объект отслеживания, используйте команду set, указав новое значение page:

ga('set', 'page', '/new-page.html');
    

Теперь это значение будет использоваться во всех отправляемых обращениях. Чтобы зарегистрировать действие на странице, отправьте обращение pageview при помощи команды send сразу после обновления объекта отслеживания.

    ga('set', 'page', '/new-page.html');
    ga('send', 'pageview');
    

Строго говоря, в команде send для обращений pageview также можно использовать в качестве третьего параметра необязательное поле page. Однако мы не рекомендуем передавать page таким способом для отслеживания одностраничных приложений, потому что поля, передаваемые с помощью команды send, не сохраняются в объекте отслеживания – они применяются только к текущему обращению. Из-за того, что объект отслеживания не обновляется, могут возникать сбои при отправке обращений других типов помимо pageview (например, с информацией о событиях или социальных взаимодействиях). Эти обращения будут связаны со значением переменной page из объекта отслеживания, заданным при его создании.

Обработка нескольких URL для одного ресурса

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

Допустим, на страницу с контактными данными можно перейти по любому из следующих URL:

  • /about.html
  • /#about.html
  • /home.html#about.html

Чтобы избежать дублирования в отчетах, имеет смысл всегда регистрировать адрес /about.html в информации о просмотрах этой страницы.

Важные примечания

Не обновляйте URL перехода для документа

При создании объекта отслеживания с помощью команды create значение document.referrer сохраняется в поле referrer этого объекта. В одностраничном приложении не выполняется полная загрузка страниц, поэтому значение поля referrer всегда остается неизменным.

Несмотря на это, перед отправкой обращений pageview не обязательно вручную обновлять значение этого поля – Google Аналитика определяет путь навигации автоматически.

Не обновляйте сведения о местоположении документа

Как сказано выше, значение document.referrer сохраняется в поле referrer объекта отслеживания. Аналогичным образом значение document.location сохраняется в поле location этого объекта, которое может содержать информацию о рекламной кампании или другие метаданные в виде параметров запроса, добавляемых в конце URL.

При обновлении этих или других метаданных Google Аналитика может запустить новый сеанс вместо текущего. Чтобы избежать этого, при отслеживании действий на странице в одностраничном приложении не обновляйте поле location, а используйте вместо него поле page.

Не создавайте новые счетчики

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