CKEditor:如何删除已添加的插件?

Dyl*_*lan 5 plugins ckeditor

我刚刚开始使用CKEditor,但很难理解插件系统.

当你点击它时,我能够添加一个简单的按钮,上面写着'Test':

  var myplugin_function = function () {
    alert('Test');
  }
  var plugin_name='myplugin';
  CKEDITOR.plugins.add(plugin_name,   
  {    
    init:function(c) {
      c.addCommand(plugin_name,myplugin_function);
      c.ui.addButton(plugin_name, 
      {
       label:'This is my plugin',
       command:plugin_name,
       icon:this.path+'myplugin.png'
      });
    }
  });
Run Code Online (Sandbox Code Playgroud)

我知道这段代码应该只执行一次,例如在a中plugin.js,但这不是我使用它的方式.每次加载Ajax页面时都会执行CKEditor实例,包括我的插件代码.

这就是我使用它来删除实例的原因,如果它存在:

  if (CKEDITOR.instances['mytextarea']) {
    CKEDITOR.remove(CKEDITOR.instances['mytextarea']);
  }
Run Code Online (Sandbox Code Playgroud)

然后我使用jquery方法从textarea创建ckeditor:

$('#mytextarea').ckeditor();
Run Code Online (Sandbox Code Playgroud)

但是第二次加载ajax页面时,我得到一个关于已经注册的插件的错误.所以我需要一种方法来删除插件并能够再次添加它.

这甚至可能吗?

UPDATE

这似乎有效:

我现在检查插件是否已注册:

if (!CKEDITOR.plugins.registered[plugin_name]) {

}
Run Code Online (Sandbox Code Playgroud)

围绕CKEDITOR.plugins.add(b, ......部分

Alf*_*oML 1

您没有显示如何添加插件,因此很难判断您的确切问题是什么;但根据您提供的代码,我可以建议您使用比“a”、“b”和“c”更好的变量名称。以这种方式理解代码相当困难。

另外,CKEDITOR.remove只是从实例数组中删除实例,但它并没有真正清除使用的资源,您应该使用CKEDITOR.instances['mytextarea']。改为销毁( true )