Me gustaría tener varias instancias de CKEditor basadas en la misma configuración, pero con diferentes alturas. He intentado establecer config con la altura predeterminada, la creación de la primera instancia, a continuación, anulando la altura & la creación de la segunda instancia:¿Cómo configurar CKEditor para múltiples instancias con diferentes alturas?
var config = {
.....
height:'400'
};
$('#editor1').ckeditor(config);
config.height = '100';
$('#editor2').ckeditor(config);
... pero consigo dos instancias CKeditor que ambos tienen 100px altura .
También probé esto:
CKEDITOR.replace('editor2',{
height: '100'
});
.. me dieron mensajes de error que la instancia ya existía. Busqué alrededor de un poco & encontré a alguien en una situación similar recibió el consejo de que tiene que destruir() la instancia antes de reemplazar(), pero eso parece demasiado complicado para simplemente establecer una altura inicial altura.
Al final he creado dos configuraciones diferentes & copiadas sobre la propiedad 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);
¿hay una manera mejor? ¿Algo que me falta? Hay this question pero no se publicaron lo suficiente como para ser útiles, & this very similar question no se ha respondido. ¡Gracias!
Actualización:
Ésta parece ser una peculiaridad manejo de sincronización/config de CKEditor - la configuración se lee & aplicó más tarde (supongo que después de DOM marco del editor se ha establecido) en lugar de cuando el editor se crea por primera vez.
Por lo tanto, cualquier cambio en los ajustes de configuración hicieron inmediatamente después de la primera editor se instancia con .ckeditor() son efectivamente aplicado por el editor en algún momento de los siguientes varios milisegundos. Yo diría que esto no es un comportamiento normal o lógico.
Por ejemplo, puede obtener el comportamiento esperado en mi primer ejemplo (anulando la propiedad config.height
después de que se haya creado una instancia del primer editor) al retrasar la segunda instancia de CKEditor con setTimeout(). Firefox necesitaba ~ 100ms, IE necesitaba 1ms. Wacky & mal.
CKEditor debe leer las configuraciones de configuración cuando se crea la primera instancia de cada editor. Por ahora, todos deben evitar esa peculiaridad.
todavía tengo todos los demás ajustes de configuración, aunque - por lo que yo puedo decir, su sugerencia no permite el uso de los otros ajustes de configuración en mi pregunta original, ¿verdad? – Wick
He actualizado mi respuesta, ¿es útil ahora? :) – Reinmar
¡Buen trabajo en la función PrototypedCopy()! Solo estoy en desacuerdo con que mi pregunta "no se tratara sobre CKEditor" - tu respuesta de clonar el objeto de configuración es una solución, pero el hecho es que mi pregunta es sobre el capricho de CKEditor con la configuración de configuración ... – Wick