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

defer в коде счётчика

octagram
24 сентября 2010, 21:11
Я установил на портал код счётчика, но после этого у пользователей без Интернета перестали подгружаться комментарии до тех пор, пока не истечёт таймаут. Я исправил это, добавив в код счётчика defer="defer", теперь Метрика определяет счётчик как не установленный.

Хочу, чтобы такой код тоже засчитывался:

<!-- Yandex.Metrika -->
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<div style="display:none;"><script type="text/javascript" defer="defer">
try { var yaCounter1502143 = new Ya.Metrika(1502143); } catch(e){}
</script></div>
<noscript><div style="position:absolute"><img src="//mc.yandex.ru/watch/1502143" alt="" /></div></noscript>
<!-- /Yandex.Metrika -->
7 комментариев
Подписаться на комментарии к посту
Атрибут defer нестандартный, работает не везде.
У нас есть асинхронный код, который работает везде, и загружается только после того, как загрузилась страница:
http://help.yandex.ru/metrika/?id=1111231
- попробуйте его.
Сработало.
alexandermyadzel
13 июня 2011, 17:05

Там уже 404.

Асинхронный код счётчика с тех пор изменён, и выдаётся всем по-умолчанию.
Его можно посмотреть в настройках кода счётчика.
PS. В принципе, можно не беспокоится о том, что проверка не находит код счётчика, так как на подсчёт статистики это не влияет (если изменённый код действительно работает).
Если catch(e) {} заменить на catch(e) {console.log(e);}
И посмотреть в Firebug'e, то будет ошибка:
ReferenceError: Ya is not defined { message="Ya is not defined",  more...}
По такой схеме хиты отправляться не будут.
Если очень нужен defer, то можно сделать так: