Wystąpił problem z CKEditor 4 i sortowalną metodą jQuery UI, gdzie jeśli posortuję kontener z instancją CKEditor, usunie on wartość i wygeneruje błąd "Uncaught" TypeError: Nie można wywołać metody 'getSelection' z undefined ". Uniemożliwia też edytorowi edycję. Udało mi się to obejść w CKEditor 3 z jednym z następujących hacków znalezionych tutaj: CKEditor freezes on jQuery UI ReorderCKEditor 4 i jQuery UI sortable usuwa zawartość po sortowaniu
Patrząc na inspektora DOM z Chrome, wygląda na to, że zawartość elementu iframe została usunięta.
Poniżej jest surowy kod testowy:
<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>
Czy masz rozwiązanie? –