42 lines
1.1 KiB
JavaScript
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 = [];
|