2011-04-14 38 views
1

請幫助我 - 我需要對CKeditor進行完全重新初始化。我不想重新初始化CKeditor的實例,但我想完全重新加載它。有什麼辦法可以實現它嗎? 我試圖做下一個:如何使CKEditor全部重新初始化?

delete window.CKEDITOR; 

然後:

//clear for old sources 
    $('script[src*="/includes/contentEditor/ckeditor/"]').each(function() { 
     $(this).remove(); 
    }); 
    $('link[href*="/includes/contentEditor/ckeditor/"]').each(function() { 
     $(this).remove(); 
    }); 

    //load CKeditor again 
    contentEditor.loadjscssfile('/includes/contentEditor/ckeditor/ckeditor.js', 'js'); 
    contentEditor.loadjscssfile('/includes/contentEditor/ckeditor/adapters/jquery.js', 'js'); 

我的方法加載編輯器,但一些插件後重裝不起作用。謝謝你的幫助!

回答

0

AlfonsoML 我使用CKeditor來動態編輯網站的不同部分。當我點擊網站的某個區域時,它會顯示與CKeditor彈出此區域上方此區域的內容。當我保存它時,我銷燬此編輯器的實例,但如果在編輯時使用鏈接插件,CKeditor無法在沒有頁面刷新的情況下顯示編輯器。 Chrome說 - 未捕獲TypeError:無法調用未定義的方法'split',Mozilla - x.config.skin未定義(我嘗試設置config.skin並顯示另一個錯誤 - z未定義)。

我希望完整的重新啓動可以提供幫助。

P.S.對不起,我可以找到如何回答您的評論...

+0

ajax.html和div_replace.html示例顯示瞭如何創建和銷燬CKEditor實例而不需要「完全重新初始化」,因此您應該檢查如何使用CKEditor修復該錯誤而不是添加奇怪的解決方法。 – AlfonsoML 2011-04-14 19:59:40

5

我有插件,我不需要完全重新CKITITER的CKEditor,只是實例,你是否正確地做到這一點?

要刪除我的情況(我的textarea由ID txt_postMsg引用):

$('#btn_cancelPost').click(function(){ 
    CKEDITOR.remove(CKEDITOR.instances.txt_postMsg); 
    $('#txt_postMsg').remove(); 
    $('#cke_txt_postMsg').remove(); 
}); 

然後我重新創建textarea和50ms的超時後我再打電話與textarea的構造,插件加載罰款。我們有一些非常複雜的插件用於Flash /圖像編輯,所以也許你的插件有問題?

2

我的版本:

$$("textarea._cke").each(function(Z) { 
    if (typeof(CKEDITOR.instances[Z.id]) == 'undefined') { 
     CKEDITOR.replace(Z.id, { customConfig : "yourconfig.js"}); 
    } else { 
     CKEDITOR.instances[Z.id].destroy(true); 
     CKEDITOR.replace(Z.id, { customConfig : "yourconfig.js"}); 
    } 
}); 
1

嘗試像

for(var instanceName in CKEDITOR.instances) 
    CKEDITOR.remove(CKEDITOR.instances[instanceName]);   
CKEDITOR.replaceAll(); 
0

我一直在尋找一種方式來重新初始化編輯器,唯一的解決辦法,我最後是刪除實例並創建一個新的ID。

這是我的代碼。

var editor = 'myeditor' 
var instance = CKEDITOR.instances[editor]; 

if(typeof instance != 'undefined') 
{ 
    instance.destroy(); 
    $(".cke_editor_" + editor).remove(); 

    //make a new id 
    editor = (Math.random().toString(36).substr(2, 10);); 
} 

CKEDITOR.replace(editor, 
{ 
} 

這並不完美,但它的工作原理。

希望這會有所幫助。