如何使完整的CKEditor重新初始化?

时间:2011-04-14 13:18:01

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

我的方法加载编辑器,但重新加载后某些插件不起作用。谢谢你的帮助!

6 个答案:

答案 0 :(得分:5)

我有插件,我也不需要完全重新初始化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 /图像编辑,所以你的插件可能有问题吗?

答案 1 :(得分: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"});
    } 
});

答案 2 :(得分:1)

尝试类似

的内容
for(var instanceName in CKEDITOR.instances)
    CKEDITOR.remove(CKEDITOR.instances[instanceName]);        
CKEDITOR.replaceAll();

答案 3 :(得分:0)

<强> AlfonsoML 我使用CKeditor动态编辑网站的不同部分。当我点击网站的某个区域时,它会显示带有CKeditor的弹出窗口,该区域内有此区域的内容。当我保存它时,我会破坏这个编辑器的实例,但如果在编辑时我使用链接插件,则CKeditor无法在没有页面刷新的情况下显示编辑器。 Chrome说 - Uncaught TypeError:无法调用未定义的方法'split',Mozilla - x.config.skin未定义(我尝试设置config.skin并显示另一个错误 - z未定义)。

我希望完整的重新初始化可以提供帮助。

P.S。对不起,我可以找到如何回答您的评论...

答案 4 :(得分: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, 
{
}

它并不完美,但它确实有效。

希望这有帮助。

答案 5 :(得分:0)

这是我的解决方案:

var editor = CKEDITOR.instances[your_ckeditor_id];
editor.mode = 'source';
editor.setMode('wysiwyg');

OR

var editor = CKEDITOR.instances[your_ckeditor_id];
editor.setData(editor.getData());