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();
|
||
}
|