Запись события посещения страницы на сайтах с SPA

Узнайте, как записывать событие посещения страницы на одностраничных сайтах

Если ваш сайт построен на технологии SPA (Single-Page Application), настроенные стандартным способом события посещения страницы на нем будут записываться только при обновлении браузера на нужной странице. 

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

Запись события посещения страницы, которая содержит часть ссылки

Запись события посещения страницы этим способом эквивалентна записи события посещения страницы с включенной опцией “Учитывать подстраницы”. В этот шаблон вам нужно вставить часть ссылки на страницу, при переходе на которую должно записываться событие, и нужное название события:

var currentUrl,
    checkUrl = setInterval(function() {
        if (currentUrl != location.href) {
            currentUrl = location.href
            if (location.href.indexOf('Часть ссылки на нужную страницу') > -1) {
                carrotquest.track('Название события')
            };
        };
     }, 500);

В результате мы получим, например, такой скрипт:

var currentUrl,
    checkUrl = setInterval(function() {
        if (currentUrl != location.href) {
            currentUrl = location.href
            if (location.href.indexOf('/blog/') > -1) {
                carrotquest.track('Посетил блог')
            };
        };
     }, 500);

Заметьте, что этот скрипт будет записывать событие посещения всех страниц, ссылки на которые содержат указанную вами в скрипте часть ссылки. Рассмотрим, как можно записывать событие посещения конкретной страницы. 

Запись события посещения конкретной страницы

Шаблон, который можно использовать для записи события таким способом:

var currentUrl,
    checkUrl = setInterval(function() {
        if (currentUrl != location.href) {
            currentUrl = location.href
            if (location.href == 'Полная ссылка на нужную страницу') {
                carrotquest.track('Название события')
            };
        };
     }, 500);

Пример итогового скрипта:

var currentUrl,
    checkUrl = setInterval(function() {
        if (currentUrl != location.href) {
            currentUrl = location.href
            if (location.href == 'https://bitrix.carrotquest.ru/catalog/sportswear') {
                carrotquest.track('Посетил каталог спортивной одежды')
            };
        };
     }, 500);

❗Важно: Такая запись события посещения страницы не будет учитывать наличие в ссылке параметров и UTM-меток. Если страница, событие перехода на которую нужно записывать, может содержать параметры и UTM-метки, лучше использовать шаблон из предыдущего раздела этой статьи.

Запись нескольких событий посещения страницы

Если вы хотели бы настроить запись нескольких событий посещения страницы вашего сайта по части ссылки, вам нужно добавить к коду следующее условие:

var currentUrl,
    checkUrl = setInterval(function() {
        if (currentUrl != location.href) {
            currentUrl = location.href
            if (location.href.indexOf('Часть ссылки на нужную страницу') > -1) {
                carrotquest.track('Название события')
            } else if (location.href.indexOf('Часть ссылки на нужную страницу') > -1) {
                carrotquest.track('Название события')
            }
        };
     }, 500);

Шаблон для записи события посещения нескольких конкретных страниц сайта будет выглядеть так:

var currentUrl,
    checkUrl = setInterval(function() {
        if (currentUrl != location.href) {
            currentUrl = location.href
            if (location.href == 'Полная ссылка на нужную страницу') {
                carrotquest.track('Название события')
            } else if (location.href =='Полная ссылка на нужную страницу') {
                carrotquest.track('Название события')
            }
        };
     }, 500);

Вы можете добавить это условие к коду столько раз, сколько различных событий посещения страницы вы хотели бы записывать. Пример кода, который будет записывать три разных события посещения страницы по части ссылки:

var currentUrl,
    checkUrl = setInterval(function() {
        if (currentUrl != location.href) {
            currentUrl = location.href
            if (location.href.indexOf('/blog/') > -1) {
                carrotquest.track('Посетил блог')
            } else if (location.href.indexOf('/cases/') > -1) {
                carrotquest.track('Посетил кейсы')
            } else if (location.href.indexOf('/article/') > -1) {
                carrotquest.track('Посетил статью')
            }
        };
     }, 500);
Работает на