Wie richte ich CKEditor für mehrere Instanzen mit unterschiedlichen Höhen ein?

Ich möchte mehrere Instanzen von CKEditor haben, die auf den gleichen Konfigurationseinstellungen basieren, aber unterschiedliche Höhen haben. Ich habe versucht mich einzurichtenconfig Richten Sie mit der Standardhöhe die erste Instanz ein, überschreiben Sie dann die Höhe und richten Sie die zweite Instanz ein:

var config = {
    .....
    height:'400'
};

$('#editor1').ckeditor(config);
config.height = '100';
$('#editor2').ckeditor(config);

... aber ich bekomme zwei CKEditor-Instanzen, die beide 100px groß sind.

Ich habe es auch versucht:

CKEDITOR.replace('editor2',{
    height: '100'
});

.. Ich habe Fehlermeldungen erhalten, dass die Instanz bereits existiert hat. Ich habe ein bisschen gesucht und jemanden gefunden, der sich in einer ähnlichen Situation befunden hat. Er hat den Rat erhalten, dass Sie die Instanz zerstören () müssen, bevor Sie sie ersetzen (), aber das scheint zu kompliziert, um nur eine andere zu setzenInitiale Höhe.

Am Ende habe ich zwei verschiedene Konfigurationen erstellt und über die toolbar_Full-Eigenschaft kopiert:

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);

Gibt es einen besseren Weg? Fehlt mir etwas? Da ist esdiese Frage Aber sie haben nicht genug gepostet, um nützlich zu sein.diese sehr ähnliche Frage wurde nicht beantwortet. Vielen Dank!

Aktualisieren:

Dies scheint ein Timing- / Konfigurationsproblem von CKEditor zu sein - die Konfiguration wird später gelesen und angewendet (ich vermute, nachdem das DOM-Framework des Editors eingerichtet wurde), anstatt wenn der Editor zum ersten Mal instanziiert wird.

Also, alle Änderungen an den Konfigurationseinstellungen vorgenommengleich nach Der 1. Editor wird mit .ckeditor () instanziierttatsächlich angewendet vom Editor irgendwann in den folgenden mehreren Millisekunden. Ich würde behaupten, dass dies kein normales oder logisches Verhalten ist.

Zum Beispiel können Sie in meinem ersten Beispiel das erwartete Verhalten erhalten (Überschreiben derconfig.height Eigenschaft, nachdem der erste Editor instanziiert wurde, um zu arbeiten, indem die zweite CKEditor-Instanz mit setTimeout () verzögert wird. Firefox benötigt ~ 100ms, IE benötigt 1ms. Verrückt und falsch.

CKEditor sollte die Konfigurationseinstellungen lesen, wenn jeder Editor zum ersten Mal instanziiert wird. Im Moment muss jeder diese Eigenart umgehen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage