我遇到了 CKEditor 4 和 jQuery UI 的可排序方法的问题,如果我对具有 CKEditor 实例的容器进行排序,它会删除该值并抛出错误“未捕获的类型错误:无法调用未定义的方法 'getSelection'”。它还使编辑器无法编辑。我能够在 CKEditor 3 中通过以下技巧之一解决这个问题: CKEditor freezes on jQuery UI Reorder
在查看 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
开始:函数(事件,ui){
$('textarea').each(function(){
var id = $(this).attr('id');
tmpStore[id] = CKEDITOR.instances[id].getData();
})
},
停止:函数(事件,用户界面){
$('textarea').each(function(){
var id = $(this).attr('id');
CKEDITOR.instances[id].setData(tmpStore[id]);
})
}
});
$('textarea').each(function(){
var ckId = $(this).attr('id');
配置 = {};
CKEDITOR.replace(ckId, 配置);
})
})
li { 填充:10px; 宽度:800 像素;高度:300px;}
</head>
<正文>
<ul id="可排序">
<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>
</正文>
</html>