配列からスクリプトをロードできるように、次のように記述しました。
scriptLoader = (function(){
var loader = function (src, handler) {
if(!self.errorstate){
var script = document.createElement("script");
script.src = src;
script.onload = script.onreadystatechange = function () {
script.onerror = loaderror(src);
script.onreadystatechange = script.onload = null;
};
var head = document.getElementsByTagName("head")[0];
(head || document.body).appendChild(script);
}
};
var loaderror = function (src) {
self.errorstate = true;
console.log('Error: '+src);
return false;
};
var self = {};
self.errorstate = false;
self.files = null;
self.callback = null;
self.go = function(){
if (self.files.length !== 0) {
loader(self.files.shift(), arguments.callee);
} else {
if (self.callback && typeof (self.callback) === 'function' && !self.errorstate) {
self.callback();
}
}
};
return self;
});
私が呼んでいるもの:
var scripts = [
'js/placeholder.js',
'js/modal.js',
'js/alert.js',
'js/notafile.js'
];
loader = new scriptLoader();
loader.files = scripts;
loader.callback = alert('loaded');
loader.go();
エラー ( ) で中断できないことを除いて、すべてが機能しているようjs/notafile.js
です。そのため、これ以上スクリプトのロードを停止し、コールバックを起動させないようにします。コンソールにエラーメッセージが表示されますが、それを止める良い方法が見つかりません!