2012-01-07 16 views
3

私はちょうどCKEditorを使い始めましたが、プラグインシステムを理解するのは苦労しています。CKEditor:追加されたプラグインを削除する方法は?

あなたがそれをクリックしたとき、私は「試験」と言うシンプルなボタンを追加することができました:

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、例えば、一度だけ実行する必要があります知っているが、それはありませんどのように私はそれを使用します。プラグイン・コードを含むCKEditorインスタンスは、Ajaxページがロードされるたびに実行されます。

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

しかし、2回目:

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

は、それから私は、テキストエリアからCKEditorバージョンを作成するためにjqueryの方法を使用します。私はそれが存在する場合は、インスタンスを削除するには、これを使用する理由だ

ajax-pageが読み込まれると、すでに登録されているプラ​​グインに関するエラーが表示されます。だから私はプラグインを削除し、それを追加する方法が必要再び

これも可能ですか?

UPDATE

これは動作するようです:

プラグインがすでにに登録されている場合、私は今チェック:

CKEDITOR.plugins.add(b,周り
if (!CKEDITOR.plugins.registered[plugin_name]) { 

} 

...一部

答えて

1

あなたはプラグインの追加方法を表示していませんが、あなたの正確な問題が何であるかを知るのは難しいです。あなたが提供したコードからは、 "a"、 "b"、 "c"よりも優れた変数名を使用することをお勧めします。このようにコードを理解することは非常に難しいです。

また、CKEDITOR.removeはインスタンス配列からインスタンスを削除するだけですが、実際に使用されているリソースはクリアされませんので、CKEDITOR.instances ['mytextarea']を使用してください。 destroy(true)代わりに

+0

okありがとう、それはFFがページのいくつかの使用の後にたくさん減速している理由を説明する、私は推測する... – Dylan

関連する問題