2009-10-12 66 views
2

文件到DOM我需要加載外部JavaScript文件,該文件是由PHP腳本生成的,我也想通過任何查詢字符串參數傳遞給腳本,以及,我想出了以下解決方案:添加外部JavaScript通過JavaScript

 

<script>
var url = 'http://example.com/scripts/js.php?foo=bar';
url += location.search.replace(’?',’&’);

var s = document.createElement(’script’);
s.setAttribute(’type’,'text/javascript’);
s.setAttribute(’src’, url);

// get the script’s ‘outer html’ and add it to the document.
var t = document.createElement(’div’);
t.appendChild(s);
document.write(t.innerHTML);

</script>

這適用於所有瀏覽器,除了IE(去圖),我相信這個問題是生成的腳本也可以下載更多的JS,這似乎掛...有沒有更好的辦法做這樣的事情?

UPDATE 如果我按Ctrl + F5加載頁面,一切正常......這是爲什麼? http://example.com/scripts/js.php的腳本是一堆document.write調用。

回答

2

您可以使用jQuery method。 它易於使用且易於維護。

jQuery是對作品:IE 6.0+,FF 2+和Safari 3.0+,歌劇9.0以上,鉻

jQuery.getScript(url, [callback]) 

載入並執行,使用HTTP GET請求的本地JavaScript文件。 在jQuery 1.2之前,getScript只能加載與原始頁面相同的域中的腳本。從1.2開始,您現在可以從任何域加載JavaScript文件。警告:在Safari 2及更高版本中,無法同步評估全局上下文中的腳本。如果您通過getScript加載函數,請務必在延遲後調用它們。

例子:

$.getScript("test.js", function(){ 
    alert("Script loaded and executed."); 
}); 
0

爲什麼不追加你創建的腳本標記頭部或身體?

+0

因爲我插入腳本是一堆文件撰寫調用的腳本。 – Steve 2009-10-12 16:16:27

1

谷歌的方式:

<script type="text/javascript"> 
    document.write(unescape("%3Cscript src='file.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 

相反文件撰寫的,你可以使用div.innerHTML追加此字符串。

+0

這不是我已經在做什麼? – Steve 2009-10-12 16:13:28

0

它不工作在IE可能是因爲你沒有設置在其他腳本標記類型屬性的原因。 IE非常挑剔;如果兩個腳本標記具有不同的類型,它會將它們視爲它們甚至不在同一頁面上。