Я пытаюсь найти способ облегчить жизнь моих пользователей (избегая блокировки рендеринга), удалив все document.write (), которые могут быть созданы рекламными скриптами.
Оригинал работает так:
var ad_tmstp=Math.round(Math.random()*10000000000),
sas_masterflag=1;
function adscript(ad_pageid,ad_formatid,ad_target)
{
var scripts = document.getElementsByTagName( 'script' );
var currentScript = scripts[ scripts.length - 1 ];
if (ad_masterflag==1) {ad_masterflag=0;ad_master='M';} else {ad_master='S';};
document.write('<scr'+'ipt src="http://www.ads.com/call/pubj/' + ad_pageid + '/' + ad_formatid + '/' + ad_master + '/' + ad_tmstp + '/' + escape(ad_target) + '?"></scr'+'ipt>');
}
Это основная функция объявлений, используемая для генерации уникального URL-адреса объявления, document.write () в DOM и выполнения ответа.
Вызов этого мастераФункция создается на сайте, куда нужно вставить объявление:
<script type="text/javascript">
ad_pageid='16645/120305';
ad_formatid=7366;
ad_target='';
adscript(ad_pageid,ad_formatid,ad_target);
</script>
Когда страница загружается, выполняется главный скрипт, в результате чего происходит document.write ().Динамический сценарий загружен, сам по себе выполняется и заканчивается неприятным
[...]Ad innerCode creation[...]
if(typeof(ad_ajax)!='undefined'&&ad_ajax)
{ad_appendToContainer(1234,innerCode);}else{document.write(innerCode);}
Достаточно неприятным, чтобы за ним серьезно наблюдали ...
Итак, что я пытался до сих пор:
var script = document.createElement('script');
script.type = 'text/javascript';
script.defer= "true";
script.src = 'http://www.ads.com/call/pubj/' + ad_pageid + '/' + ad_formatid + '/' + ad_master + '/' + ad_tmstp + '/' + escape(ad_target) + '?';
currentScript.parentNode.insertBefore( script, currentScript.nextSibling );
HTML-рендеринг идеален: # 1 создает # 2.Но по какой-то причине # 2, содержащий окончательный document.write (), который должен генерировать рекламный контент, не выполняется.
Чего мне может не хватать?Спасибо.