解决方法document.write函数

时间:2011-06-17 21:16:23

标签: javascript ads document.write

我正在尝试通过删除可能由广告脚本制作的所有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应生成广告内容,不会执行。

我可能会错过什么?感谢。

1 个答案:

答案 0 :(得分:1)

如果您想取消所有document.write()来电,请执行以下操作:

document.write = function() {};

并且每次document.write()调用都不会执行任何操作:)

(也许我只是误解了你,因为这很简单;))