Итак, я пытаюсь найти ответ на вопрос, почему возникает эта проблема;Я устранил проблему, но хочу знать, почему это произошло.
Предоставленный Google код отслеживания конверсий, который вводил iframe с помощью document.write
, внезапно приводил к открытию страницы перестали выполняться во всех версиях Internet Explorer, но было исправлено введением того же iframe с использованием метода, отличного от document.write
.
Doubleclick - это рекламная сеть, которая предоставляет Фрагмент кода JavaScript для отслеживания конверсий по объявлениям.
Приводимый ими фрагмент выглядит так:
<SCRIPT language="JavaScript">
var axel = Math.random()+"";
var a = axel * 10000000000000;
document.write('<IFRAME SRC="https://fls.doubleclick.net/activityi;src=143;type=donat01;cat=indir4;ord=1;num='+ a + '?" WIDTH=10 HEIGHT=10 FRAMEBORDER=0></IFRAME>');
</SCRIPT>
<NOSCRIPT>
<IFRAME SRC="https://fls.doubleclick.net/activityi;src=143;type=donat01;cat=indir4;ord=1;num=1?"
WIDTH=1 HEIGHT=1 FRAMEBORDER=0></IFRAME>
</NOSCRIPT>
Теперь я знаю, что по разным причинам document.write опасен, и его следует избегать. Но Google дает мне этот код, так что я решил, что могу ему доверять.
Он внезапно начал нарушать работу всех наших страниц для всех пользователей, использующих Internet Explorer. Как и в случае, страница полностью перестанет отображать, как только попадет в document.write
. Это было безумием: один из крупнейших сторонних рекламодателей в Интернете предоставил мне JavaScript, который БУКВАЛЬНО сломал мои страницы покупок на 25% моего трафика!
В качестве сортировки я быстро заменил тот же код, используя найденную технику инъекции в Google Analytics:
var iframe = document.createElement('iframe');
iframe.src = //the URL;
iframe.width = 0;
iframe.height = 0;
iframe.frameborder = 0;
var ref = document.getElementsByTagName('script')[0];
ref.parentNode.insertBefore(iframe, ref);
Это решило проблему, фактически не объясняя: