@ikerya

Почему останавливается выполнение js (у пользователей iOS), когда интерпретатор доходит до кода Яндекс.Метрики и Google Analytics?

Столкнулся с проблемой, при которой выполнение кода у пользователей iOS останавливается, когда интерпретатор доходит до начала кода Яндекс.Метрики и/или Google Analytics.

HTML следующий:

...
<script src="/js/common.js">...
<script src="/js/stats.js">...
...


В common.js создаются текстовые поля, точнее не успеют создаться. В stats.js содержится следующий код:
document.addEventListener("readystatechange", function() {
	if(document.readyState == "complete") {
		document.body.innerHTML += "<a href='javascript://' id='counter' class='none'><img src='//counter.yadro.ru/hit?t26.5;r" + escape(document.referrer) + ((typeof(screen)=="undefined")?"":";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?screen.colorDepth:screen.pixelDepth)) + ";u" + escape(document.URL) + ";" + Math.random() + "'><\/a>";
		(function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter111= new Ya.Metrika({ id:111, clickmap:true, trackLinks:true, accurateTrackBounce:true }); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks");
	}
}, false);


Собственно у этих пользователей iOS такая проблема в браузерах Safari и Dolphin, в Chrome всё прекрасно работает.

P.S. Если убрать код с Яндекс.Метрикой, всё заработает.
P.S.S. Т.к. у пользователей Украины заблокировали яндекс, асинхронно подгружаю статистику. Атрибут async и defer пробовал, проблема с асинхронностью не решилась.

UPD: Обнаружил, что проблема в этой строчке: n.parentNode.insertBefore(s, n);
  • Вопрос задан
  • 283 просмотра
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
грузи скрипты со своего сервера

вообще доставляет ваша "нужна", вы проверяли, инфа от таких залоченных юзеров в метрику попадает?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы