2012-01-07 26 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只有一次被執行,例如,但這不是我如何使用它。每次加載Ajax頁面時,都會執行CKEditor實例,包括我的插件代碼。

這就是爲什麼我使用它來刪除該實例,如果存在的話:

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

然後我使用jQuery的方式來創建一個文本區域的CKEditor的:

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

但第二次ajax頁面加載,我得到關於已經註冊的插件的錯誤。所以我需要一種方法來刪除插件,並能夠再次添加

這甚至可能嗎?

UPDATE

這似乎工作:

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

} 

CKEDITOR.plugins.add(b, ...周圍部分

回答

1

我現在檢查,如果插件已與註冊

你不顯示你如何添加插件,所以很難說出具體的問題。但從你提供的代碼中,我可以建議你使用比「a」,「b」和「c」更好的變量名。這樣很難理解代碼。

此外,CKEDITOR.remove只是從實例數組中刪除實例,但它並不真正清除使用的資源,您應該使用CKEDITOR.instances ['mytextarea']。 destroy(true)改爲

+0

好的謝謝,這就解釋了爲什麼在頁面使用幾次後FF變慢了很多,我猜... – Dylan 2012-01-08 14:06:59

相關問題