0

配列からスクリプトをロードできるように、次のように記述しました。

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です。そのため、これ以上スクリプトのロードを停止し、コールバックを起動させないようにします。コンソールにエラーメッセージが表示されますが、それを止める良い方法が見つかりません!

4

1 に答える 1

0

try / catch + throw を使用する

http://www.w3schools.com/js/js_errors.asp

var loaderror = function (src) {
    errorstate = true;
    throw 'Error: '+src;
    return false;
};

var scripts = [
    'js/placeholder.js',
    'js/modal.js',
    'js/alert.js',
    'js/notafile.js'
];


loader = new scriptLoader();
loader.files = scripts;
loader.callback = alert('loaded');

try{
   loader.go();
}catch(err){
   console.log(err);
}
于 2012-10-26T23:23:47.490 に答える