2010-07-05 227 views
1

當我使用document.write時,整個頁面變爲空白,只顯示廣告。試圖寫js使整個頁面變爲空白

function __adthis(id) { 
    $.getJSON('banner.php', function (data) { 
     var adNum = Math.floor(Math.random() * data.ban.length); 
     document.write("<SCRIPT TYPE='text/javascript'> SRC='+data.ban[0].link+'><\/SCRIPT>"); 
    }); 
} 

這是一個測試, 這是一個測試, 這是一個測試, 這是一個測試,

<div id="res"><script>`__adthis();`</script></div> 

回答

3

不要使用document.write。相反,使用DOM方法來創建一個<script>元素,並將其添加到div:

var e = document.createElement('script'); 
e.setAttribute('type', 'text/javascript'); 
e.setAttribute('src', data.ban[0].link); 
document.getElementById('res').appendChild(e); 
+0

感謝,這將有助於我在未來編,但IM仍然得到同樣的問題之前:( – jay 2010-07-05 04:12:10

+0

同樣的問題,這意味着頁面再次變爲空白? – casablanca 2010-07-05 04:14:26

+0

是的,它還是一片空白。 – jay 2010-07-05 04:20:27

0

HTML

<div id="ad_goes_here" /> 

的JavaScript

function __adthis(id){ 
    $.getJSON('banner.php', function(data) { 
     var adNum = Math.floor(Math.random()*data.ban.length); 
     $("#ad_goes_here").html("<SCRIPT TYPE='text/javascript' SRC='+data.ban[0].link+'><\/SCRIPT>"); 
    }); 
} 
0

只是爲什麼document.write()沒有一個側面說明按預期工作。該W3C spec定義是這樣:

寫文本字符串()所開打開的文檔 流

Mozilla developer docs加上這句話:

寫入一個文件那已經加載了 而沒有調用document.open() 會自動執行 document.open調用。一旦你有 寫完,建議通過 調用document.close(),告訴 瀏覽器完成加載頁面。 您編寫的文本被解析爲 文檔的結構模型。

換句話說,使用document.write()一旦已經呈現的文檔觸發document.open() call其中:

打開用於寫入的文件流。如果 文件存在於目標中,則此 方法將清除它。