2013-02-04 39 views
0

我創造了這個腳本,針對一core.js文件爲我的客戶的網站,我想從core.js文件動態加載一些JavaScript庫。但是,javascript庫要求您首先加載該庫,然後使用腳本的其餘部分,因爲在調用它之前必須定義庫對象,doh。所以我有一個非常簡單的腳本動態加載一個文件,但我想知道,如果有,以確保它加載它在優先提前core.js文件的方法。下面是當前的腳本:如何在JavaScript中的特定行上動態加載文件?

(function() { 
    var script = document.createElement("script"); 
    script.setAttribute("type", "text/javascript"); 
    script.setAttribute("src", "http://modernizr.com/downloads/modernizr-latest.js"); 
    if(typeof script != "undefined") { 
     document.getElementsByTagName("head")[0].appendChild(script); 
    } 
})(); 

並在調試器,你會看到:

當然,它會提前核心文件的加載動態文件,但我不知道是否有一種方法可以指定要加載modernizr文件的文檔上的行?否則,即使我已經加載它,我也無法使用Modernizr。

很明顯,我不能使用jQuery,因爲我想要加載這一點。

+0

交換這兩行的工作?換句話說,在加載模糊的外線之前加載modernizr? – robbrit

+0

的appendChild附加腳本到頭部的底部,只需要運行在正確的順序的功能,並以正確的順序追加腳本,或者使用預先準備預先設置的腳本來代替。 – adeneo

+0

@robbrit好了,模糊了JavaScript文件(這是根據要求這樣做),是實際加載Modernizr的文件的JavaScript,所以我不能只是交換出來。和adeneo,你是說我可以像現在一樣使用我的方法來使用Modernizr和jQuery嗎?在同一個文件中?因爲根據我的經驗,你必須加載這些*首先*,然後使用它。 – ModernDesigner

回答

1

您可以使用load事件偵聽器響應加載的動態加載的JavaScript資源(或任何資源,圖像,iframe,視頻等)。在這裏最簡單的方法是:

(function() { 
    var script = document.createElement("script"); 
    ... 
    script.onload = function() { 
     // this will run later, when the script loads 
     // in this function you can safely use Modernizr 
    } 
})(); 
+0

很酷。再次感謝! – ModernDesigner

相關問題