0

我正在尝试制作一个 tinymce 类型的编辑器。我希望它可以像 tinymce 一样使用插件进行扩展。我的问题是如何在我的插件中加载和使用外部 javascript 文件?

4

2 回答 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 回答