Проблема с яндекс метрикой в IE(область видимости объекта)
Всем доброго дня.
При помощи следующего кода на сайт подключается счетчик яндекс метрики - <script type="text/javascript"> var yaParams = {/*Здесь параметры визита*/}; </script> <div style="display:none;"> <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script> <script type="text/javascript"> (function(w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounterSOMEID = new Ya.Metrika({id:SOMEID, enableAll: true, webvisor:true,params:window.yaParams||{ }}); } catch(e) { } }); })(window, "yandex_metrika_callbacks"); </script></div> <noscript><div><img src="//mc.yandex.ru/watch/SOMEID" style="position:absolute; left:-9999px;" alt="" /></div></noscript> Далее реализовано отслеживание целеи следующим образом ( цель - оставить заявку на email ) - yaCounterSOMEID.hit('http://'+servername+thisurl+'#requestsent',null,null); Собственно код отправки данных в php скрипт аяксом - function send_mail(){ if ($('.tel').val().length < 7 || $(".tel").val() == "ТЕЛЕФОН*"){ $('.tel').css('color', '#FF0000'); return false; } var name = encodeURIComponent($(".name").val()); var tel = encodeURIComponent($(".tel").val()); var comment = encodeURIComponent($(".comment").val()); $.ajax({ url: '/include/mail.php?name='+name+'&tel='+tel+'&comment='+comment+'&url='+thisurl, success: function (data){ $('#request-form').fadeOut('0.1',function(){ $('#request-submit').fadeIn('0.1'); }); $(".tel").val('ТЕЛЕФОН*'); $(".name").val('ВАШЕ ИМЯ'); $(".comment").val(''); $('#comment-form').hide(); yaCounterSOMEID.hit('http://'+servername+thisurl+'#requestsent',null,null); } }); } Проблема в том что исключительно только в IE код счетчика цели(yaCounterSOMEID.hit('http://'+servername+thisurl+'#requestsent',null,null);) в скрипте с аяксом вызывает ошибку и соответственно не отправляет данные в метрику. Ошибка - yaCounterSOMEID определение отсутствует. Я далеко не спец в js, так нахватался верхов. Помогите плиз. |
Люди помогите плиз я в отчаянии. Хотябы ответьте на вопрос - почему я вижу объект Ya внутри этого кода -
(function(w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter11522443 = new Ya.Metrika({id:11522443, enableAll: true, webvisor:true,params:window.yaParams||{ }}); } catch(e) { } }); })(window, "yandex_metrika_callbacks"); а за пределами не вижу, т.е. alert(Ya); вызывает ошибку. |
Давайте ссылку на сайт.
|
|
Я откопал еще кое что. Объект метрики yaCounter11522443 вообще не создается в IE - в extption ловится - Данный объект не содержит такого свойства или метода( Что получается? Проблемы у яндекса?) Или все-таки это как-то связано с оставшимся кривым кодом у меня на сайте?
|
Начнём с того, что у вас не тот код стоит, который выдаёт Метрика. Вы зачем строчку одну вверх подняли?
Верните всё, как было, потом будем дальше смотреть. |
Если вы об этой строке - <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script> - вернул. Почемуто мне показалось что так логичнее. Ведь откуда-то же должен браться Ya.Metrica...
|
Все равно кидает exception
|
Уберите пока defer="defer", хуже не станет, но заработает.
|
Списибо, за попытку помочь, но я только что решил проблему.
Нужно было добавить перед вызовом yaCounter11522443.hit('http://'+servername+thisurl+'#requestsent',null,null); строчку - yaCounter11522443 = new Ya.Metrika({id:11522443, enableAll: true, webvisor:true,params:window.yaParams||{ }}); Оказывается код счетчика не создает объект yaCounter11522443 в IE. Правда интересно было бы узнать почему, так в отличие от остальных браузеров. |
Часовой пояс GMT +3, время: 00:59. |