CKEditor 4 と jQuery UI のソート可能なメソッドで問題が発生しました。ここで、CKEditor インスタンスを持つコンテナをソートすると、値が削除され、「Uncaught TypeError: 未定義のメソッド 'getSelection' を呼び出せません」というエラーがスローされます。また、エディターを編集できなくなります。ここで見つかった次のハックのいずれかを使用して、CKEditor 3 でこれを回避することができました 。
Chrome DOM インスペクターを見ると、iframe のコンテンツが削除されているように見えます。
以下は粗いテストコードです:
<html>
<頭>
<title>テスト</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">
$(関数(){
var tmpStore = {};
$('#sortable').sortable({
カーソル: '移動',
// V3 では機能するが V4 では機能しないハック:
// https://stackoverflow.com/questions/3379653/ckeditor-freezes-on-jquery-ui-reorder
start:function (イベント,ui) {
$('テキストエリア').each(関数(){
var id = $(this).attr('id');
tmpStore[id] = CKEDITOR.instances[id].getData();
}))
}、
停止:関数(イベント、UI){
$('テキストエリア').each(関数(){
var id = $(this).attr('id');
CKEDITOR.instances[id].setData(tmpStore[id]);
}))
}
});
$('テキストエリア').each(関数(){
var ckId = $(this).attr('id');
構成 = {};
CKEDITOR.replace(ckId、構成);
}))
}))
李 { パディング: 10px; 幅: 800px; 高さ: 300px; }
</head>
<本体>
<ul id="ソート可能">
<li><textarea id="test1" name="test1">テスト1</textarea></li>
<li><textarea id="test2" name="test1">test2</textarea></li>
<li><textarea id="test3" name="test1">test3</textarea></li>
</ul>
</body>
</html>