Javascript Chrome应用程序是否支持script.async=false?
我使用以下方法将脚本附加到DOM并按顺序执行它们:Javascript Chrome应用程序是否支持script.async=false?,javascript,html,asynchronous,google-chrome-app,Javascript,Html,Asynchronous,Google Chrome App,我使用以下方法将脚本附加到DOM并按顺序执行它们: function appendScript(url) { var elem = document.createElement('script'); elem.src = url; elem.async = false; document.head.appendChild(elem); } 看 它们按非顺序加载(良好): 它们执行的是非顺序(bad),从最小到最大,但各不相同。我有很多JS错误,因为事情是按照它
function appendScript(url) {
var elem = document.createElement('script');
elem.src = url;
elem.async = false;
document.head.appendChild(elem);
}
看
它们按非顺序加载(良好):
它们执行的是非顺序(bad),从最小到最大,但各不相同。我有很多JS错误,因为事情是按照它们应该的顺序定义的
这个简单的加载器可以在Chrome、Firefox、IE9和Safari中完美工作
但它在Chrome应用程序中不起作用
我错过什么了吗
我当前的解决方法:
var script;
function appendScript(url) {
var elem = document.createElement('script');
elem.src = url;
elem.async = false;
if(script) {
script.onload = function() {
document.head.appendChild(elem);
script = null;
};
script = elem;
} else {
document.head.appendChild(elem);
script = elem;
}
}
这将等待脚本加载(并运行)后再开始加载下一个脚本。
缺点是加载时间,因为没有(I/O)并行性。使用AMD模块将是强制执行适当依赖性检查的一种方法。@Tomalak,好的……AMD是如何做到的?(在Chrome应用程序中是否有效?)最终,他们使用的是Javascript,所以我应该能够复制相同的行为。