2013-06-19 58 views
0

我想在我的頁面中顯示加載了AJAX/jQuery-JSON的廣告。如何使用javascript的document.write加載腳本

  • 腳本:
  • 文件xxxxx.js包含到document.write();

如何集成此腳本並使document.write被解釋。 以及爲什麼它不起作用?

這裏是我的測試顯示腳本執行,因爲警報('你好1')顯示,但不包含alert.write('你好2')的document.write;

直接調用文件到DOM執行井 「你好1」 和 「你好2」

test.js

alert("hello 1"); 
document.write('<scr'+'ipt type="text/javascript">alert("hello 2");</scr'+'ipt>'); 

指數:

<body> 
<script> 
function loadScriptJs() { 
var s = document.createElement('script'); 
s.src = 'test.js'; 
s.type = 'text/javascript'; 
document.getElementById("pub").appendChild(s); 
} 
</script> 
<div id="pub"> 
    PUB A AJOUTER CI DESSOUS EN JAVASCRIPT : 
    <!-- appel direct de la pub 
    <script src="test.js" type="text/javascript"></script> --> 
</div> 
<script> loadScriptJs(); </script> 
</body> 

回答

1

你添加一個腳本appendChild,它是異步加載的。所以當你的代碼在test.js中運行時,很可能已經構建了DOM,並且document.write將覆蓋所有頁面內容。

它看起來像最簡單的解決辦法是更換這樣的:

<script> loadScriptJs(); </script> 

有:

<script src="test.js"></script> 

另一種選擇是不使用document.write在所有內部test.js.從loadScriptJs開始,爲腳本加載設置回調(s.onload = function() { /* loaded */ })),然後從該回調中將廣告注入到DOM中。

+0

對不起,我的英語:) 謝謝bfavaretto,但我不能使用,爲了簡單的解決方案 使每個負載一擊:我必須加載腳本每個加載內容,該函數將加載後執行我的內容 – beberahim

+0

好的,但是你不能在'test.js'中使用document.write。查看我的更新。 – bfavaretto