LGS/loadr.js

42 lines
1.1 KiB
JavaScript

var loadr = function(file, cb) {
if (file instanceof Array) {
for (var i = 0; i < file.length; i++) {
if (loadr.cache.indexOf(file[i]) == -1) {
loadr.pending.push(file[i]);
loadr.loadFile(file[i], cb);
} else {
if (loadr.pending.length == 0) cb(err);
}
}
} else {
if (loadr.cache.indexOf(file) == -1) {
loadr.pending.push(file);
loadr.loadFile(file, cb);
} else {
if (loadr.pending.length == 0) cb(err);
}
}
};
loadr.loadFile = function(file, cb) {
var err = null;
if (loadr.cache.indexOf(file) != -1 && loadr.pending.length == 0) {
cb(err);
return;
}
var script = document.createElement('script');
document.head.appendChild(script);
script.file = file;
script.onload = function() {
loadr.pending.splice(loadr.pending.indexOf(script.file), 1);
if (loadr.pending.length == 0) cb(err);
};
script.onerror = function(err) {
cb(err);
};
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', file);
};
loadr.callbacks = [];
loadr.pending = [];
loadr.cache = [];