Есть веб-приложение, одностраничник на Backbone, модули подгружаются через RequireJS. В числе прочего загружается Яндекс.Метрика и рекламная сеть ВКонтакте.
У многих посетителей стоит AdBlock или другие расширения, блокирующие рекламные и трекинговые скрипты – Метрику (metrika/watch) и ВК (vkpreroll, vkadman).
В коде много, где, стоят вызовы к Метрике для сбора статистики – отметки событий, например
App.Metrika.params({ auth_recheck: 1})
На случай, если Метрика не загрузилась, в конфиге RequireJS прописана альтернатива – локальный модуль-заглушка, объект с методами Метрики, только там пустые функции:
return {
addFileExtension: function(){}
, clickmap: function(){}
// и т.д.
Этот костыль (?) работает нормально несколько лет, с AdBlock Plus проблем нет. Но сейчас столкнулся с тем, что у кого-то в Google Chrome расширение
Fair AdBlocker (by STANDS) блокирует и заглушку тоже – вылетает ошибка, что модуль Metrika вообще
undefined.
Как лучше поступить, чтобы заблокированные баннерорезками скрипты не вызывали ошибок у клиентов?