我需要以同步方式包含多個js文件,並且一旦它們成功包含,我將調用function main()
這將創建該小部件。對於目前我已經建立了這樣的功能以同步方式使用javascript加載.js文件
var scriptArrayHC = [retrieveURL()+"/js/bootstrap.min.js",
"//platform.twitter.com/widgets.js",
retrieveURL()+"/js/html5shiv-2.js",
retrieveURL()+"/js/ie-emulation-modes-warning.js",
retrieveURL()+"/js/ie10-viewport-bug-workaround.js"];
function loadScript(scriptArray, func){
var counter_script=0;
[].forEach.call(scriptArray, function(src){
var script = document.createElement('script');
script.onload = function() {
counter_script++;
//console.log("Script "+counter_script+" --- "+src);
if(counter_script==scriptArray.length) eval(func);
};
script.src = src;
document.getElementsByTagName('head')[0].appendChild(script);
});
}
loadScript(scriptArray, "main()");
它工作正常..但我認爲這不是最好的方法。有沒有人有更好的方法來做到這一點,或者有沒有任何圖書館?
爲什麼不動異步加載(需要/ browserify /的WebPack/JSPM /諸如此類的東西)? – Amit
通過[git]上的RequireJS挖掘(https://github.com/jrburke/requirejs)。當它加載js _async_時,它似乎將腳本附加到標題中,並且可能與您嘗試實現的內容距離不遠 - 查看代碼,我確信它們已經接近_best way_ 。 –
動態異步加載是否會處理一個js文件對另一個文件的依賴性? – void