我使用多个CKEditor实例与CMS,并添加了拖放多个框的能力,以便为用户重新排序内容,以便他们可以选择其显示在前端。CKEDITOR和jQuery的拖放使内容消失
拖放工作并将内容正确放置在网站的前端,但内容从CKEditor中消失。
它并没有将它从视图中隐藏起来,而是在检查时发现CKEditor的html,head和body标签被清空。
之前有人遇到过这种情况,或者知道为什么?
感谢
我使用多个CKEditor实例与CMS,并添加了拖放多个框的能力,以便为用户重新排序内容,以便他们可以选择其显示在前端。CKEDITOR和jQuery的拖放使内容消失
拖放工作并将内容正确放置在网站的前端,但内容从CKEditor中消失。
它并没有将它从视图中隐藏起来,而是在检查时发现CKEditor的html,head和body标签被清空。
之前有人遇到过这种情况,或者知道为什么?
感谢
我有同样的问题,并注意到CKEditor的使用为格式文本的显示的iframe中。看起来Iframes干扰了jquery拖放代码(它们也拦截事件,这是我的理解)。如果您在使用jQuery可拖动()(而不是排序()或调整大小()),那么你可以使用内置的所谓iframefix配置变量,它看起来是这样的:如果你使用的是
$(".selector").draggable({ iframeFix: true });
可排序(像我一样)或可调整大小的,你必须推出自己的修复程序(或找到一个现有的非jui)。我会在这里发布解决方案,一旦我得到它的工作。我正在努力解决这个初学者的问题:Trouble Using JQuery UI.Resizable() and UI.Draggable() with an iFrame,
如果您使用可拖动+可排序,也许您想卸载编辑器并稍后重新加载。这对我有效:
function unloadEditors() {
$('textarea.editor:hidden').each(function(){
var tagId = $(this).attr('id');
CKEDITOR.instances[ tagId ].destroy();
});
}
function loadEditors() {
$('textarea.editor:visible').each(function(){
var tagId = $(this).attr('id');
CKEDITOR.replace(tagId);
});
}
$(document).ready(function(){
$("#blocks").sortable({
revert: true,
start: function(event,ui){
unloadEditors();
},
stop: function(event,ui){
loadEditors();
}
});
});
此解决方案使ckeditor在拖动过程中消失。更好的东西? – coorasse