Ho tentato incessantemente di risolvere questa situazione frustrante che stavo vivendo. Sto cercando di far funzionare ckEditor all’interno di una finestra di dialogo dell’interfaccia utente jQuery. L’editor è incluso perfettamente e sostituisce la textarea con lo skin ckeditor, ma non riesco a modificare / aggiungere contenuti nel blocco dei contenuti. L’unica soluzione funzionante che ho visto ora era che se facevo clic su “Codice sorgente” all’interno dell’editor e lo rimuovevo, sono in grado di aggiungere contenuti ad esso.
Il mio impianto era puramente e non ho aggiunto ulteriori informazioni / codice. Qualche idea?
Aveva lo stesso problema,
rimuovere gli effetti dal modale aiutato: Rimosso:
show: "scale", hide: "puff",
Ora la mia chiamata appare così:
$("#report").dialog({ title: "", bgiframe: true, autoOpen: false, width: 990, height: 620, modal: true, draggable: true, resizable: true, resizeStop: function(event, ui) { var y = $(event.target).height(); repEditor.resize( "99%", y - 10 ); }, buttons: { 'Close': function() { $(this).dialog('close'); } } });
Per le versioni di jQuery-UI (1.10+) e jQuery (1.10+) e CKEditor 3.6, questa soluzione sembra funzionare:
_moveToTop: function( event, silent ) { var $parent = this.uiDialog.parent(); var $elementsOnSameLevel = $parent.children(); var heighestZIndex = 0; $.each($elementsOnSameLevel, function(index, element) { var zIndexOfElement = $(element).css('z-index'); if (zIndexOfElement) { var zIndexOfElementAsNumber = parseInt(zIndexOfElement) || 0; if (zIndexOfElementAsNumber > heighestZIndex) { heighestZIndex = zIndexOfElementAsNumber; } } }); var currentZIndex = this.uiDialog.css('z-index'); var moved; if (currentZIndex >= heighestZIndex) { moved = false; } else { this.uiDialog.css('z-index', heighestZIndex + 1); moved = true; } if ( moved && !silent ) { this._trigger( "focus", event ); } return moved; }
È ansible modificare il file in linea (non consigliato) o semplicemente sovrascrivere la funzionalità jQuery-UI predefinita in un file JS separato che viene caricato dopo jQuery-UI, ma prima che venga creata la finestra di dialogo.
$.widget("ui.dialog", $.ui.dialog, { _moveToTop: function( event, silent ) { //Logic from above } });
In alternativa a mantenere l’animazione “mostra” e “nascondi”, crea l’istanza dell’editor dopo che l’evento “mostra” termina con una funzione di callback completa: opzione di “mostra”
$("#report").dialog({ title: "", bgiframe: true, autoOpen: false, width: 990, height: 620, modal: true, // start my suggestion show: { effect: "scale", complete: function() { $( "#selector" ).ckeditor(); } }, hide: "puff", // end my suggestion draggable: true, resizable: true, resizeStop: function(event, ui) { var y = $(event.target).height(); repEditor.resize( "99%", y - 10 ); }, buttons: { 'Close': function() { $(this).dialog('close'); } } });