2011-05-05 76 views
15

如何從另一個JavaScript文件(如CSS)加載一個JavaScript文件? 在CSS中,我們使用寫@import url("mycss.css");如何從另一個加載一個JavaScript文件?

有什麼辦法可以在JavaScript中做到這一點?

+0

[在另一個JavaScript文件中包含JavaScript文件?](http://stackoverflow.com/questions/950087/ include-a-javascript-file-in-another-javascript-file) – Vadzim 2016-04-26 12:04:48

回答

27

是的。如果您希望使用純JavaScript,則必須動態創建script標籤,然後將其附加到文檔中。

是的。如果您使用jQuery庫,則可以使用$.getScript方法。

$.getScript("another_script.js"); 
32

有在Javascript中沒有@進口十歲上下的功能/方法,但你完全可以追加一個腳本來<head>標籤,像這樣:

var newScript = document.createElement('script'); 
newScript.type = 'text/javascript'; 
newScript.src = '/path/to/js/file'; 
document.getElementsByTagName('head')[0].appendChild(newScript); 

或者像埃德加我之前正確提到可以使用jQuery的。

+0

這是否加載文件並啓動所有寫在其上的內容? – 2016-01-25 20:26:14

+0

,因爲我期待着寫這段代碼來加載jQuery – 2016-01-25 20:26:42

+0

@RajaAnbazhagan是的,它會啓動文件的內容,我已經用它來加載jQuery,所以我知道這是有效的。 – musicinmyhead 2016-01-26 20:14:51

3

除了eval字符串以外,Javascript本身不提供任何模塊化幫助。但是,這是一個普遍的需求,大多數大型JavaScript框架都提出了自己的解決方案,最近在requirejs項目中努力標準化這些API。如果您使用的是像Dojo或jQuery這樣的框架,您可能最好學習使用他們的設施,但如果不使用,requirejs是一款輕量級獨立工具。你基本上只需添加

<script data-main="scripts/main" src="scripts/require.js"></script> 

<head>部分,然後把自己的javascript裏面一些像這樣的包裝代碼(從require.js網站被盜):

require(["helper/util"], function() { 
    //This function is called when scripts/helper/util.js is loaded. 

    require.ready(function() { 
     //This function is called when the page is loaded 
     //(the DOMContentLoaded event) and when all required 
     //scripts are loaded. 

    }); 
}); 
16

只是因爲沒有人提到它還有另一種選擇,它不需要任何花哨的庫或者編碼,document.write。原則上,它是這樣的,但看到下面的一個警告:

document.write('<script src="myscript.js" type="text/javascript"></script>'); 

這將在完全解析腳本標記來執行,如果你把你的腳本標籤的頭部,新的腳本標籤會也在腦海中,正在執行之後。保重直接執行它,而當文件被加載(如在$(function(){})回調比這是我用:

(function(){ 
    function load(script) { 
    document.write('<'+'script src="'+script+'" type="text/javascript"><' + '/script>'); 
    } 

    load("script1.js"); 
    load("script2.js"); 
    load("etc.js"); 
})(); 

的封閉功能只是爲了不污染全局命名空間

警告(以及爲什麼上面打破的「腳本」)是腳本標記中可能沒有結尾腳本標記,HTML分析程序不知道它是腳本的一部分。關於該主題有一個other question

相關問題