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