我最近开始使用CKEditor 4.x,但我希望用户只能使用非常有限的标记集。而且,并不是所有的标签组合都是有用的。
我目前只允许这些标记/格式:
<p>, <h3>, <ul>, <ol>, <li>, <strong>, <em> (and maybe some more)我只需要,名单是为正常的风格而不是标题。但是在list元素中创建标题是绝对可能的。结果看起来很有趣,但没有用。列表(点或编号)样式为普通文本,但标题文本像标题(不同字体、不同字体、不同颜色)。
我想禁止这样做。我还发现,在某些情况下,CKEditor也将<p>标记放在列表中,这也是我不想要的。我想,主要是当我将列表中的标题更改回正常时,而不是CKEditor只是将标题标记更改为<p>。
有可能阻止CKEditor 4这样做吗?我看到,甚至还有一张关于CKEditor 3的类似问题的票:
http://dev.ckeditor.com/ticket/6849
但是由于CKEditor 4似乎是重写的,所以解决方案似乎不适用(它是按固定方式关闭的)。
有人知道吗,我怎么才能阻止这一切?为了更清楚地说明:它不是关于粘贴文本或源代码编辑的,我对编辑器进行了很大的限制,窗格只包含这些样式和撤销/重做。但是,尽管如此,使用普通的命令,仍然可以创建这样的不必要的样式。
我想要的是:
<h3>A simple headline</h3>
<p>A simple paragraph</p>
<ul>
<li>First text</li>
...
</ul>我而不是想要的是:
<ul>
<li><p>First text</p></li>
...甚至:
<ul>
<li><h3>First text</h3></li>
...发布于 2015-03-09 08:45:33
要做到这一点是不可能的。原因是有很多方法来创建这个内容。可以粘贴列表,可以在列表项中创建标题,可以在标题上创建列表,也许可以通过删除、拖放等方法来完成这些工作。可以处理所有这些情况并防止创建这些结构,但这将是一项很大的工作。
相反,我认为您可以在编辑器中使用内部块不可见(没有边距,字体大小相同)的方式来设计li>p, li>h3。然后,还可以在显示该内容的页面上应用这些样式,或者在从编辑器检索内容时可以清除该内容。例如,可以这样做(见 event):
editor.on( 'toDataFormat', function( evt ) {
var filter = new CKEDITOR.htmlParser.filter( {
elements: {
p: function( el ) {
if ( el.parent && el.parent.name == 'li' ) {
delete el.name; // This removes the element and leaves its content.
}
}
}
} );
filter.applyTo( evt.data.dataValue );
}, null, 12 );https://stackoverflow.com/questions/28916595
复制相似问题