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 に答える