Есть несколько руководств о том, как настроить 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.