Обратная связь
Введите ваши данные, и я свяжусь с вами!
Какой у вас вопрос?

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c обработкой персональных данных

Избавляемся от Uncaught ReferenceError: ym is not defined в Яндекс Метрике

Материал обновлен 18:01:2022

На практике может возникнуть ситуация, при которой попытка отправить данные о цели в Яндекс Метрику приведет к ошибке: ym is not defined.

Полный текст ошибки: Uncaught ReferenceError: ym is not defined . Когда это возможно? В том случае если отправка информации о достижении цели методом reachGoal выполняется до того как счетчик Яндекс Метрики был инициализирован:

Пример ошибки при отправке данных

Пример ошибки при отправке данных

Как видно из описания мы пытаемся использовать объект ym, который не существует на странице. Я специально на этой странице не выполнил предварительно стандартный код счетчика Яндекс Метрики, как результат — я не могу использовать ym для взаимодействия с Метрикой.

Настройки, интеграции, примеры реальных задач, пошаговые инструкции, узнавайте первыми в моем Telegram канале. Не пропустите новые материалы, подпишитесь сейчас!

Добавим код на страницу и повторим попытку отправки:

Успешная отправка

Успешная отправка

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

В нем изначально проверяется есть ли объект ym и если его нет, то повторно вернуться к проверке через 0,5 секунды, если объект есть — выполнить отправку. Этот код можно использовать как в исходном коде страниц, так и в тегах Google Tag Manager. При выполнении работ по настройке веб-аналитики на проектах я использую это решение. Пока не будет инициализирован счетчик вы будете получать вывод в консоль браузера следующего сообщения вместо ошибки:

Ожидание инициализации

Ожидание инициализации

Можно положиться и на стандартный механизм Яндекс Метрики, который позволит отправить данные после того, как счетчик будет инициализирован. Но этот метод срабатывает если у вас на странице есть объект ym и он ждет появление счетчика с нужным id:

Хронология взаимодействия

Хронология взаимодействия

0 — открываю страницу, на которой происходит инициализация счетчика Метрики с номером 00000000
1 — пытаюсь отправить методом reachGoal в счетчик 61555978 , не получается
2 — инициализирую счетчик 61555978
3 — автоматически отправляется информация методом reachGoal, которую я пытался отправить в п. 2 выше
4 — отправка просмотра страницы после стандартной инициализации счетчика Метрики в счетчик 61555978

Этот вариант не сработает и приведет к ошибке: Uncaught ReferenceError: ym is not defined если на странице не будет объекта ym. По этой причине я рекомендую использовать первый вариант решения проблемы, описанный в статье.

Рассылка бесплатных кейсов, инструкций, обзоров
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности
Ежедневные новости из мира аналитики в Telegram канале
Настройки, интеграции, примеры реальных задач, пошаговые инструкции
материалы ПО ТЕМЕ:
ОБСУЖДЕНИЕ:
Ilya K.
23.06.2021 at 16:08

Отличное решение! Спасибо!

Оставить комментарий
Для добавления комментария — заполните форму!

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c обработкой персональных данных