我正在尝试通过删除可能由广告脚本制作的所有document.write()来找到一种方法来缓解用户的生活(通过避免渲染阻止)。
orignal的作用如下:
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>');
}
这是主广告功能,用于为DOM生成唯一的广告网址,document.write(),并使其响应执行。
此主功能的调用是在站点中进行的,需要插入广告:
<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。 但是,出于某种原因,包含最终document.write()的#2应生成广告内容,不会执行。
我可能会错过什么?感谢。
答案 0 :(得分:1)
如果您想取消所有document.write()
来电,请执行以下操作:
document.write = function() {};
并且每次document.write()
调用都不会执行任何操作:)
(也许我只是误解了你,因为这很简单;))