Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用插件制作jQuery插件_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript 使用插件制作jQuery插件

Javascript 使用插件制作jQuery插件,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我正在尝试制作一个tinymce类型编辑器。我希望它能像tinymce一样用插件扩展。我的问题是如何在我的插件中加载和使用外部javascript文件?您可以创建一个新的脚本标记来拉入javascript文件: YourEditor.loadPlugin = function(url) { var scriptElement = document.createElement('script'); scriptElement.src = url; document.body.

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

您可以创建一个新的脚本标记来拉入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);
};
然后您可以从编辑器中触发一个事件,让编辑器的用户知道插件“some plugin”已经加载


注册插件的工作方式与jsonp类似,因为它允许您根据共享函数的知识从任意来源加载代码。它传递了一个名称和一个要调用的函数,该函数将设置插件需要操作的所有内容

以下是我决定做的:

使用
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;
    },

你有没有办法对注册插件部分做更多的解释?我补充了一些解释。如果你还需要帮助,请告诉我