使用内联编辑器 CKEDITOR 4.2.0 和 Firefox 23.0.1,我的可编辑 div 标签的内部 html 丰富了<br type="_moz">
. 它不是用 IE 插入的。
我可以使用 javascript 轻松找到并替换此标签。
我如何在 config.js 文件中为我所有的内联可编辑 div 全局处理这个问题?
使用内联编辑器 CKEDITOR 4.2.0 和 Firefox 23.0.1,我的可编辑 div 标签的内部 html 丰富了<br type="_moz">
. 它不是用 IE 插入的。
我可以使用 javascript 轻松找到并替换此标签。
我如何在 config.js 文件中为我所有的内联可编辑 div 全局处理这个问题?
您不应该element.innerHTML
通过(或$(element).html()
)从内联编辑器获取数据。实际存在的内容与 CKEditor 返回的内容之间存在显着差异editor.getData()
(这是正确的使用方法)。
这种差异来自这样一个事实,即数据(由editor.setData()
- 是的 - 也不要直接设置)需要转换为在contenteditable
元素内部更好地可编辑。因此,需要恢复这种转换(以及由/为浏览器完成的其他奇怪的事情),这发生在editor.getData()
.
PS。如果您不知道从哪里获取编辑器实例,请检查全局CKEDITOR.instances
对象。
快速简单的 CSS 解决方案是将以下内容添加到加载到 CKeditor 中的样式表中:
br[type="_moz"]{display: none;}
如果使用 jQuery,您可以简单地在文档中搜索 < br type="_moz" > 并将其删除。当然你不需要搜索整个文档,只需要你想要的 DOM 元素。
$(document).find('br').each(function(){
if($(this).attr('type') === '_moz'){
$(this).remove();
}
});
我已经使用了这个补丁,它对我有用。
http://dev.ckeditor.com/attachment/ticket/5767/5767.patch
不幸的是,ckeditor 团队没有使用这个补丁。
所以appendBogus
从_中删除函数source/core/dom/element.js
并添加新appendBogus
函数_source/core/dom/walker.js
,然后根据ckeditor.pack
文件组合所有js文件以重新创建ckeditor.js