Яндекс Метрика

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

Материал обновлен:
17:11:2020

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

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

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

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

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

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

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

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

После инициализации счетчика сведения успешно отправлены. Каким образом можно сделать механизм отправки, чтобы быть уверенным, что при инициализации счетчика данные с помощью 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. По этой причине я рекомендую использовать первый вариант решения проблемы, описанный в статье.

Метки не заданы

Рассылка бесплатных кейсов, инструкций, обзоров

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


mode_edit