Клуб Яндекс.Метрики

Как создать заглушку если метрика не загрузилась?

Пост в архиве.

Проблема: при использовании приватного режима фаерфокса и резальщиков скриптов метрика перестаёт работать.

Из-за этого, в том месте где было обращение к метрике, например reachGoal, скрипт прерывается из-за

ReferenceError: yaCounterХХХХХХ is not defined

Хочется решить эту проблему не трогая десятки мест, где вызывается этот счётчик.

В инструкции сказано, что в init можно передать triggerEvent и обрабатывать событие готовности счётчика. Но это не совсем то что нужно, мне нужно событие ошибки при инициализации счётчика. Ну и вообще этот флаг не работает, событие готовности не вызывается.

Пробовал до инициализации счётчика создать заглушку

yaCounterXXXXXX = {
   reachGoal: function(goal){console.log("metrika not working")}
}

Но тогда при корректной загрузке скрипта и отрабатывании инициализации эта заглушка не срабатывается.

Вопрос — как правильно решить эту задачу?

1 комментарий
Есть тяжелое решение:
Поскольку скрипты могут блокироваться все, нужно первоначально сделать стабильную безскриптовую версию кода, а затем с помощью скриптов (если они оказались не заблокированы) перезаписать код на скриптовую версию.
Условно:
<div id="link1"><a href="page1">text</a></div>
<script>
document.getElementById(link1).innerHTML='<a href="page1" onclick="ym(XXXXXX, \'reachGoal\', \'TARGET_NAME\'); return true;">text</a>';

</script>