Ho riscontrato un problema con CKEditor 4 e il metodo ordinabile di jQuery UI in cui se ordino un contenitore che ha un'istanza CKEditor, rimuove il valore e genera un errore "Uncaught TypeError: impossibile chiamare il metodo 'getSelection' di undefined ". Inoltre rende l'editor non modificabile. Sono stato in grado di aggirare questo problema in CKEditor 3 con uno dei seguenti hack trovati: CKEditor freezes on jQuery UI ReorderCKEditor 4 e jQuery UI sortable rimuove il contenuto dopo l'ordinamento
Osservando l'ispettore DOM di Chrome, sembra che il contenuto dell'iframe sia stato rimosso.
Di seguito è grezzo codice di prova:
<html> <head> <title>test</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js"></script> <script src="ckeditor.js"></script> <script type="text/javascript"> $(function(){ var tmpStore = {}; $('#sortable').sortable({ cursor: 'move', // Hack that use to work on V3 but not on V4: // https://stackoverflow.com/questions/3379653/ckeditor-freezes-on-jquery-ui-reorder start:function (event,ui) { $('textarea').each(function(){ var id = $(this).attr('id'); tmpStore[id] = CKEDITOR.instances[id].getData(); }) }, stop: function(event, ui) { $('textarea').each(function(){ var id = $(this).attr('id'); CKEDITOR.instances[id].setData(tmpStore[id]); }) } }); $('textarea').each(function(){ var ckId = $(this).attr('id'); config = {}; CKEDITOR.replace(ckId, config); }) }) li { padding: 10px; width: 800px; height: 300px; } </head> <body> <ul id="sortable"> <li><textarea id="test1" name="test1">test1</textarea></li> <li><textarea id="test2" name="test1">test2</textarea></li> <li><textarea id="test3" name="test1">test3</textarea></li> </ul> </body> </html>
hai preso la soluzione? –