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

时间:2012-01-07 19:00:05

标签: 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'
      });
    }
  });

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

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

  if (CKEDITOR.instances['mytextarea']) {
    CKEDITOR.remove(CKEDITOR.instances['mytextarea']);
  }

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

$('#mytextarea').ckeditor();

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

这甚至可能吗?

更新

这似乎有效:

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

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

}

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

1 个答案:

答案 0 :(得分:1)

您没有展示如何添加插件,因此很难说出您的确切问题是什么;但是从你提供的代码我可以建议你使用变量名比“a”,“b”和“c”更好。用这种方式理解代码要困难得多。

另外,CKEDITOR.remove只是从实例数组中删除了实例,但它并没有真正清除已使用的资源,你应该使用CKEDITOR.instances ['mytextarea']。destroy( true )而不是