同じ構成設定に基づいて、高さが異なる CKEditor の複数のインスタンスが必要です。デフォルトの高さで構成を設定し、最初のインスタンスを設定してから、高さをオーバーライドして2番目のインスタンスを設定しようとしました:
var config = {
.....
height:'400'
};
$('#editor1').ckeditor(config);
config.height = '100';
$('#editor2').ckeditor(config);
...しかし、両方とも 100px の高さを持つ 2 つの CKEditor インスタンスを取得します。
私もこれを試しました:
CKEDITOR.replace('editor2',{
height: '100'
});
.. インスタンスが既に存在するというエラー メッセージが表示されました。少し調べてみたところ、同様の状況にある人が、replace() の前にインスタンスを destroy() する必要があるというアドバイスを得ていることがわかりましたが、初期の高さを変更するだけでは複雑すぎるようです。
最後に、2 つの異なる構成をセットアップし、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() を使用して 2 番目の CKEditor インスタンスを遅らせることで、最初の例 (最初のエディターがインスタンス化された後にプロパティをオーバーライドする) で期待される動作を得ることができます。Firefox では最大 100 ミリ秒、IE では 1 ミリ秒が必要でした。奇抜で間違っています。
CKEditor は、各エディターが最初にインスタンス化されたときに構成設定を読み取る必要があります。今のところ、誰もがその癖を回避する必要があります。