我正在尝试制作一个 tinymce 类型的编辑器。我希望它可以像 tinymce 一样使用插件进行扩展。我的问题是如何在我的插件中加载和使用外部 javascript 文件?
问问题
102 次
2 回答
2
您可以创建一个新的脚本标签来拉入 javascript 文件:
YourEditor.loadPlugin = function(url) {
var scriptElement = document.createElement('script');
scriptElement.src = url;
document.body.appendChild(scriptElement);
};
如果加载的 javascript 被包装在一个调用中以向您的编辑器注册自身:
YourEditor.registerPlugin("some-plugin", function(YourEditor) {
/* plugin code */
});
在您的核心代码中,您将声明一个函数:
YourEditor.registerPlugin = function(name, loadFunction) {
loadFunction (this);
// fire an event (dummy syntax)
this.fire('pluginLoaded', name);
};
然后你可以从 YourEditor 中触发一个事件,让编辑器的用户知道插件“some-plugin”已经加载。
注册插件的工作方式与 jsonp 类似,因为它允许您根据共享函数的知识从任意来源加载代码。它传递了一个名称和一个要调用的函数,该函数将设置插件运行所需的一切。
于 2013-05-12T16:45:38.537 回答
0
这是我决定做的事情:
使用该jQuery.getScript()
功能。甚至不知道它的存在。
所以这是我的代码:
loadplugins: function() {
var self = this;
var settings = self.settings;
var plugins = settings.plugins.split(/[\s,]+/);
var thispath = settings.script_url;
$.each(plugins, function(i,e) {
// add .js to the plugin and the path before it
var thisPlugin = thispath + settings.plugin_dir + e + '.js'; // I'll change this to work with a script or directory
$.getScript(thisPlugin, function(data, textStatus, jqxhr) {
console.log(data, textStatus, jqxhr);
self.registerPlugin(data, function() {
});
});
});
return true;
},
于 2013-05-12T17:32:27.247 回答