Решение проблемы Uncaught TypeError: ym is not a function в Яндекс.Метрике
В этом руководстве мы рассмотрим, как решить ошибку в консоли ‘ym is not a function’ в Яндекс.Метрике.
Исправим ошибку проверяя загрузку скрипта Яндекс.Метрики
- Создание интервала: В этом коде используется функция
setInterval
, которая позволяет выполнять определенную функцию через равные промежутки времени. В данном случае, функция будет вызываться каждые 300 миллисекунд. - Проверка функции ym: Внутри этой функции происходит проверка, является ли
ym
функцией. Это необходимо для того, чтобы убедиться, что скрипт Яндекс.Метрики уже загружен. Еслиym
является функцией, это означает, что скрипт Яндекс.Метрики успешно загружен. - Инициализация Яндекс.Метрики: Если
ym
является функцией, то происходит инициализация Яндекс.Метрики с определенными настройками. Это включает в себя активацию различных функций Яндекс.Метрики, таких как отслеживание кликов, отслеживание ссылок, точное отслеживание отказов, вебвизор и электронная коммерция. - Остановка интервала: После успешной инициализации Яндекс.Метрики интервал останавливается с помощью функции
clearInterval
. Это означает, что функция, которую мы задали вsetInterval
, больше не будет вызываться. - Вывод сообщения в консоль: Если
ym
не является функцией, это означает, что скрипт Яндекс.Метрики еще не загружен. В этом случае в консоль выводится сообщение ‘Метрика’.
// Здесь я создаю интервал с помощью функции setInterval. Эта функция будет вызываться каждые 300 миллисекунд.
var ee = setInterval(function () {
// Здесь я проверяю, является ли ym функцией. Если это так, значит, скрипт Яндекс.Метрики уже загружен.
if (typeof window.ym === 'function') {
// Если ym является функцией, я инициализирую Яндекс.Метрику с моими настройками.
ym(XXXXXX, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true,
ecommerce:"dataLayer"
});
// После инициализации Яндекс.Метрики я останавливаю интервал, чтобы он больше не вызывался.
clearInterval(ee);
} else {
// Если ym не является функцией, значит, скрипт Яндекс.Метрики еще не загружен. Я вывожу сообщение в консоль.
console.log('Метрика');
}
}, 300); // Интервал установлен на 300 миллисекунд, что означает, что функция будет вызываться каждые 0,3 секунды.