2013-05-12 88 views
0

我想做一個tinymce類型編輯器。我希望它可以像tinymce那樣通過插件進行擴展。我的問題是我如何能夠在我的插件中加載和使用外部JavaScript文件?如果加載的javascript被包裹在一個調用本身與你的編輯註冊使用插件做一個jQuery插件

YourEditor.loadPlugin = function(url) { 
    var scriptElement = document.createElement('script'); 

    scriptElement.src = url; 

    document.body.appendChild(scriptElement); 
}; 

回答

2

您可以創建一個新的腳本在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相似,因爲它允許您根據共享函數的知識從任意源加載代碼。它傳遞了一個名稱和一個函數來調用,這將設置插件需要運行的所有內容。

+0

有什麼辦法,你可以解釋一下關於**註冊插件**的一部分? – watzon 2013-05-12 17:06:18

+0

我加了一些解釋。如果您需要更多幫助,請讓我知道 – 2013-05-12 17:19:21

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