在单页上处理多个Ckeditor实例

时间:2015-07-14 06:00:25

标签: javascript html ckeditor

我根据我的ajax数据生成了多个ckeditor实例,并按需销毁实例,如下所示

 for (var i in CKEDITOR.instances) 
            try{
                CKEDITOR.instances[i].destroy();
            }catch(e){
                 CKEDITOR.instances[i] = null;
            }
 }

我使用给定值的循环生成编辑器。查看plunker

基本上我需要在根据ajax数据加载页面后显示所有编辑器。因此,当我的数据很大时,创建多个实例,然后使用浏览器内存。

按需启动编辑器不是我的要求。如何在页面加载时显示编辑器以及考虑浏览器内存?请建议

1 个答案:

答案 0 :(得分:2)

如果我是你,我会使用轻量级inline editor instances。按需创建它们以节省时间并提高性能(plunker):

// http://docs.ckeditor.com/#!/api/CKEDITOR-cfg-disableAutoInline
CKEDITOR.disableAutoInline = true;

function generateEditor( i ) {
  return CKEDITOR.dom.element.createFromHtml( '<div contenteditable="true" id="editor' + i + '"></div>' );
}

$(function() {
  var holder = CKEDITOR.document.getById( 'holder' ),
      el;

  for ( var editor = 100; editor--; ) {
    el = generateEditor( editor );
    holder.append( el );

    el.once( 'click', function() {
      CKEDITOR.inline( this );
    } );
  }

  console.log( CKEDITOR.instances );
});

此外:

  • 确保使用最小的插件子集来提高性能。 basic package是一个很好的起点,但也可以查看builder