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