52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
|
|
|||
|
/*
|
|||
|
extensions.js:负责拓展插件
|
|||
|
*/
|
|||
|
|
|||
|
"use strict";
|
|||
|
|
|||
|
function extensions () {
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
extensions.prototype._load = function (callback) {
|
|||
|
if (main.replayChecking) return callback();
|
|||
|
if (!window.fs) {
|
|||
|
this._loadJs('_server/fs.js', function () {
|
|||
|
core.extensions._listExtensions(callback);
|
|||
|
}, callback);
|
|||
|
} else this._listExtensions(callback);
|
|||
|
}
|
|||
|
|
|||
|
extensions.prototype._loadJs = function (file, callback, onerror) {
|
|||
|
var script = document.createElement('script');
|
|||
|
script.src = file + '?v=' + main.version;
|
|||
|
script.onload = callback;
|
|||
|
script.onerror = onerror;
|
|||
|
main.dom.body.appendChild(script);
|
|||
|
}
|
|||
|
|
|||
|
extensions.prototype._listExtensions = function (callback) {
|
|||
|
if (!window.fs) return callback();
|
|||
|
fs.readdir('extensions', function (error, data) {
|
|||
|
if (error || !(data instanceof Array)) return callback();
|
|||
|
var list = [];
|
|||
|
data.forEach(function (name) {
|
|||
|
if (/^[\w.-]+\.js$/.test(name)) {
|
|||
|
list.push(name);
|
|||
|
}
|
|||
|
});
|
|||
|
list.sort();
|
|||
|
core.extensions._loadExtensions(list, callback);
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
extensions.prototype._loadExtensions = function (list, callback) {
|
|||
|
var i = 0;
|
|||
|
var load = function () {
|
|||
|
if (i == list.length) return callback();
|
|||
|
core.extensions._loadJs('extensions/' + list[i++], load, load);
|
|||
|
}
|
|||
|
load();
|
|||
|
}
|