How to properly destroy CKEditor instance?

前端 未结 7 2139
无人及你
无人及你 2020-12-09 02:41

I am running CKeditor 3.4 on a pretty simple page. I am having a problem (sometimes) where when I call document.main_form.submit(), it will not send along the contents of th

相关标签:
7条回答
  • 2020-12-09 03:15

    In my situation

    CKEDITOR.instances.myInstanceName.destroy();
    

    didn't help, because I'd opened CKEditor in jquery dialog on double click on some item. When I closed editor and then opened them again, my code crashed.
    Solution was using

    CKEDITOR.instances.myInstanceName.destroy(false);
    

    which updated DOM element (link to documentation).

    0 讨论(0)
  • 2020-12-09 03:16

    I once used angularjs ui-router with one CKEDITOR instance for each sub-view. I used the following solution to clear the instances every time I load the ui-view

    for(name in CKEDITOR.instances)
    {
        CKEDITOR.instances[name].destroy()
    }
    
    0 讨论(0)
  • 2020-12-09 03:21

    the solution that finally did work.

    The issue was if you destroy a ckeditor and the subsequently try to replace a textarea that does not work.

    I found this simple example that gave me the clue. Use div and append the ckeditor instead of using replace api call

    http://ckeditor.com/latest/samples/old/ajax.html

    <div id='emailEditor1'>
                  </div>
    
    function closeTab() {
        emailEditor1.destroy();
        emailEditor1 = null;
    }
    
    function createEditor() 
        if (emailEditor1 == null) {
            emailEditor1 = CKEDITOR.appendTo( 'emailEditor1');
        }
    }
    
    0 讨论(0)
  • 2020-12-09 03:26

    I had this problem. What a pain.

    To properly destroy the editor instance, try

    if (CKEDITOR.instances.myInstanceName) CKEDITOR.instances.myInstanceName.destroy();
    

    From the documentation here

    I solved the missing content issue by assigning the contents of the editor to a hidden field prior to postback. I'm using ASP.Net, but it should work universally.

    in the client-side click handler of the submit button, call

    if (CKEDITOR.instances.myInstanceName)
        document.getElementById('hiddenField').value = CKEDITOR.instances.getData();
    
    0 讨论(0)
  • for(name in CKEDITOR.instances){ CKEDITOR.instances[name].destroy() }

    Use to code to destroy all the instances created by ckeditor

    0 讨论(0)
  • 2020-12-09 03:32

    use this simple code.Note my text area id is editor1.
    or You can also check it with console.log(CKEDITOR.instances.editor1);

    if (CKEDITOR.instances.editor1) {
         CKEDITOR.instances.editor1.destroy();
    }
    
    0 讨论(0)
提交回复
热议问题