我試圖找到一種方法,通過刪除可能由廣告腳本進行的所有document.write()來(通過避免渲染阻止)來緩解我的用戶生活。解決方法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>');
}
這是主廣告功能,用來生成惟一的廣告網址,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。 但是,由於某種原因,包含最終document.write()應該生成廣告內容的#2,不會執行。
我可能會錯過什麼?謝謝。
我很抱歉,但我不完全明白。您可以正確追加新的腳本元素(並且可以驗證其src屬性是否正確?如果將其src屬性加載到新窗口,會發生什麼情況?)。但是當附加正確的腳本時,代碼不會執行?沒有錯誤拋出? – Pantelis
這正是發生的情況。新窗口中的src屬性顯示由廣告提供商生成的javavascript源代碼,用於生成並插入廣告。 – pixelboy