我想拥有多个基于相同配置设置但高度不同的 CKEditor 实例。我尝试使用默认高度设置配置,设置第一个实例,然后覆盖高度并设置第二个实例:
var config = {
.....
height:'400'
};
$('#editor1').ckeditor(config);
config.height = '100';
$('#editor2').ckeditor(config);
...但是我得到了两个 CKEditor 实例,它们的高度都为 100px。
我也试过这个:
CKEDITOR.replace('editor2',{
height: '100'
});
.. 我收到实例已经存在的错误消息。我搜索了一下,发现有人在类似情况下得到建议,你必须在替换()之前销毁()实例,但这对于设置不同的初始高度来说似乎太复杂了。
最后,我设置了两个不同的配置并复制了 toolbar_Full 属性:
var config1 = {
height:'400',
startupOutlineBlocks:true,
scayt_autoStartup:true,
toolbar_Full:[
{ name: 'clipboard', items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },
{ name: 'editing', items : [ 'Find','Replace','-' ] },
{ name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat' ] },
{ name: 'paragraph', items : [ 'NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl' ] },
'/',
{ name: 'links', items : [ 'Link','Unlink','Anchor' ] },
{ name: 'insert', items : [ 'Image','HorizontalRule' ] },
{ name: 'styles', items : [ 'Styles','Format','Font','FontSize' ] },
{ name: 'colors', items : [ 'TextColor','BGColor' ] },
{ name: 'tools', items : [ 'Maximize', 'ShowBlocks' ] },
{ name: 'document', items : [ 'Source' ] }
]
}
var config2 = {
height:'100',
startupOutlineBlocks:true,
scayt_autoStartup:true
};
config2.toolbar_Full = config1.toolbar_Full;
$('#editor1').ckeditor(config1);
$('#editor2').ckeditor(config2);
有没有更好的办法?有什么我想念的吗?有这个问题,但他们发布的内容还不够有用,而且这个非常相似的问题还没有得到回答。谢谢!
更新:
这似乎是 CKEditor 的计时/配置处理怪癖——稍后读取和应用配置(我猜是在设置编辑器的 DOM 框架之后),而不是在第一次实例化编辑器时。
因此,在使用 .ckeditor() 实例化第一个编辑器后立即对配置设置所做的任何更改实际上会在接下来的几毫秒内由编辑器应用。我认为这不是正常行为,也不是合乎逻辑的。
例如,您可以config.height
通过使用 setTimeout() 延迟第二个 CKEditor 实例来获得我的第一个示例中的预期行为(在第一个编辑器被实例化后覆盖该属性)。Firefox 需要约 100 毫秒,IE 需要 1 毫秒。古怪和错误。
CKEditor 应该在每个编辑器第一次实例化时读取配置设置。目前,每个人都必须解决这个怪癖。