我正试图强迫CKE停止修改我的HTML,并尝试引入我们自己的规则。
例如,CKE将删除空 span 和 i 标记,我们可以阻止它使用
CKEDITOR.dtd.$removeEmpty.span = false
CKEDITOR.dtd.$removeEmpty.i = false
到目前为止一切顺利。然后我们尝试使 A 标签能够支持块级元素(HTML5),我们也可以通过操作DTD来完成。
但现在看来DTD对象还不足以满足我们的目标。 例如,它正在删除空 A 标记,我无法阻止它执行此操作,
CKEDITOR.dtd.$removeEmpty.a = false
不会做的伎俩。它使用位于内容末尾的空 BR 标签做同样的事情。
我知道CKE正在使用过滤器,解析器,处理器或我需要挂钩并修改/修改它的东西,以阻止它进行这些更改。你能否就如何实现这一点给我任何建议?
亲切地,奥古斯丁。
我也期待在 SELECT 标签中添加额外受支持的子项。选择支持optgroup和option作为子项,我正在尝试添加对custom_tag(内联)的支持,但我无法成功实现它。
CKEDITOR.dtd.select.custom_tag = 1
不是这样做的。自定义标记也在dtd。$ inline上声明 我想有一些外部处理清理它,我无法从DTD对象控制它。关于这方面的任何指针?
答案 0 :(得分:2)
不幸的是,空链接是一种特殊情况,要停止删除它们,您需要修改源:
function isRemoveEmpty( node ) {
// Keep marked element event if it is empty.
if ( node.attributes[ 'data-cke-survive' ] )
return false;
// Empty link is to be removed when empty but not anchor. (#7894)
return node.name == 'a' && node.attributes.href || CKEDITOR.dtd.$removeEmpty[ node.name ];
}
顺便说一句。 CKEditor删除空内联元素,因为它们不可编辑(有些东西可能会开始工作不正常)。为了确保这些元素的正确可编辑性,您可以为它们编写widgets。
答案 1 :(得分:2)
要在CKEditor中禁用过滤HTML(源代码),请在config.js
文件中写入以下行:
CKEDITOR.editorConfig = function( config ) {
config.allowedContent = true;
};