|
//-----------------------------------------------------------------------------
// PluginManager
// 插件管理器
// The static class that manages the plugins.
// 这个静态的类 管理 插件
function PluginManager() {
throw new Error('This is a static class');
}
//路径
PluginManager._path = 'js/plugins/';
//脚本
PluginManager._scripts = [];
//错误地址
PluginManager._errorUrls = [];
//参数
PluginManager._parameters = {};
//安装
PluginManager.setup = function(plugins) {
plugins.forEach(function(plugin) {
if (plugin.status && !this._scripts.contains(plugin.name)) {
this.setParameters(plugin.name, plugin.parameters);
this.loadScript(plugin.name + '.js');
this._scripts.push(plugin.name);
}
}, this);
};
//检查错误
PluginManager.checkErrors = function() {
var url = this._errorUrls.shift();
if (url) {
throw new Error('Failed to load: ' + url);
}
};
//参数
PluginManager.parameters = function(name) {
return this._parameters[name.toLowerCase()] || {};
};
//设置参数
PluginManager.setParameters = function(name, parameters) {
this._parameters[name.toLowerCase()] = parameters;
};
//读取脚本
PluginManager.loadScript = function(name) {
var url = this._path + name;
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.async = false;
script.onerror = this.onError.bind(this);
script._url = url;
document.body.appendChild(script);
};
//在错误
PluginManager.onError = function(e) {
this._errorUrls.push(e.target._url);
};
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-5-10 06:45
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.