使用 CKEditors 更改两个 div 的顺序

Changing order of two divs with CKEditors

我有两个 CKEditor,由 Liferay 脚本创建,在我看来是一个接一个。两者都在单独的 div 中。我想改变它的顺序。

我尝试使用这样的东西:

var firstDivWithCKEditor = document.getElementById("firstDivWithCKEditor");
var secondDivWithCKEditor = document.getElementById("secondDivWithCKEditor "); 
var parentDiv = secondDivWithCKEditor.parentNode();
parent.insertBefore(secondDivWithCKEditor , firstDivWithCKEditor);

顺序变了,但是在这个操作之后我不能用一个编辑器做任何事情,编辑器里面的html消失了。单击编辑器中的任何按钮后,控制台出现错误:Uncaught TypeError: Cannot read 属性 'getSelection' of undefined。

有人知道哪里出了问题吗?

经典(基于iframe)编辑器实例无法做到这一点。不过,您可以轻松地重新初始化您的实例 (JSFiddle):

var e1, e2,
    el1 = CKEDITOR.document.getById( 'editor1' ),
    el2 = CKEDITOR.document.getById( 'editor2' );

function initEditors( reverse ) {    
    if ( e1 || e2 ) {
        e1.destroy();
        e2.destroy();        
    }

    ( reverse ? el2 : el1 ).insertBefore( ( reverse ? el1 : el2 ) );

    e1 = CKEDITOR.replace( el1 );
    e2 = CKEDITOR.replace( el2 );
}