Есть несколько руководств о том, как настроить LunaMetrics Ajax Event Listener. На большинстве веб-сайтов стандартная практика работает должным образом. Однако вы можете столкнуться с некоторыми проблемами в одностраничных приложениях.

Есть две основные причины, по которым Ajax Listener не работает должным образом. Оба они чаще встречаются в одностраничных приложениях, но могут происходить и с многостраничными веб-сайтами.

Вы используете неправильный триггер

Стандартный способ настройки тега - использовать пользовательский тег HTML и запускать его на всех страницах.

Это хорошо работает для приложений, в которых страница перезагружается каждый раз, когда вы переходите по другой ссылке. Однако за последние несколько лет способ создания веб-сайтов изменился. Теперь с более популярными одностраничными приложениями страница почти никогда не перезагружается во время навигации, а триггер All Pages срабатывает только один раз.

Если это так, то вы, вероятно, используете History Change триггер вместо All Pages для отслеживания ваших просмотров. Например, для отслеживания просмотров страниц в Google Analytics у вас есть тег, настроенный со следующим триггером:

Это может привести вас к мысли, что вам нужно настроить тег AJAX Listener с тем же триггером. За исключением случаев, когда вы его реализуете, вы заметите, что ваше ajaxComplete событие иногда запускается несколько раз с одним и тем же содержанием.

Это вызвано тем, как работает AJAX Listener скрипт. Как только пользовательский скрипт будет добавлен на страницу, он начнет прослушивать запросы AJAX и никогда не остановится. Если запрос сделан, сценарий отправит событие ajaxComplete на уровень данных и продолжит прослушивание другого.

Помните, что в одностраничных приложениях страница не перезагружается вместе с навигацией. Это означает, что каждый скрипт, который вы добавляете в приложение, останется там (если он не был намеренно удален). Когда вы переходите к дополнительной ссылке на своей странице и срабатывает History Change триггер, на страницу добавляется второй AJAX Listener скрипт. И теперь у вас есть 2 слушателя на вашей странице, запускающие одно и то же событие по одному и тому же запросу AJAX. Чем больше ссылок вы нажимаете, тем больше у вас слушателей и тем больше запускается повторяющихся событий.

Установите правильный триггер

Устранить проблему так же просто, как изменить триггер, запускающий тег AJAX Listener. Вместо History Change используйте Page View — DOM Ready. Это обеспечит активацию тега только один раз.

Вы спросите, почему Page View — DOM Ready, а не Page View? Тег Ajax Listener зависит от внешней библиотеки под названием JQuery. В зависимости от того, как создано приложение, загрузка библиотеки jquery может быть остановлена ​​до тех пор, пока страница не загрузится полностью. Используя Dom Ready, мы убеждаемся, что страница загружена (следовательно, jquery загружен) перед добавлением тега на страницу.

По-прежнему возможно, что тег активируется до загрузки библиотеки JQuery. Это приводит нас ко второй проблеме с Ajax Listener.

Что, если тег добавлен, но событие ajaxComplete не отправлено?

Если у вас правильно настроен тег прослушивателя AJAX, но вы не видите никаких ajaxCompleted событий, переданных на уровень данных, возможно, на вашем веб-сайте отсутствует зависимость JQuery. JQuery - очень популярная библиотека, которая сегодня существует на большинстве веб-сайтов. Однако с одностраничными сайтами библиотека уже не так важна для разработки, и ее все больше и больше исключают из сайтов.

Самый простой способ узнать, включен ли на вашем веб-сайте jquery, - это спросить разработчиков. Другой вариант - использовать консоль браузера.

Если вы определили, что jQuery отсутствует на веб-сайте, лучший вариант - использовать бесплатный тег прослушивателя ajax для jquery. Он создан для работы в точности как слушатель Lunametrics, но не зависит от каких-либо сторонних технологий.

Резюме

Следите за этими проблемами, и если вы видите запуск повторяющихся событий, убедитесь, что вы используете триггер PageView — DOM Ready. Или, если у вас есть противоположная проблема и никакие события не запускаются, поговорите со своими разработчиками, если библиотека JQuery включена в проект. Или же переключите GTM на использование тега без зависимостей, который не зависит от каких-либо библиотек.

Надеюсь, это сэкономит вам время при реализации прослушивателя AJAX.