Ckeditor 如何清除应用于元素的自定义样式?

Ckeditor 如何清除应用于元素的自定义样式?,ckeditor,Ckeditor,使用Ckeditor 4x,添加时,不能使用“删除格式”按钮,因为它不能删除样式(类) 只有在使用默认样式时,它才能正常工作。这里有几点需要解释,因为过去的设计决策并不像看上去那么简单 默认情况下,使用RemoveFormat仅删除内联样式 要删除“样式”下拉列表应用的块样式,需要在该下拉列表中取消选择它们(它在切换模式下工作)。您将继续使用像H1这样的原始标记,您可以在格式下拉列表的帮助下将其更改为另一个像P这样的标记必须按该顺序进行。 似乎最好的解决方案是覆盖该方法。例如,您只想从h1-h

使用Ckeditor 4x,添加时,不能使用“删除格式”按钮,因为它不能删除样式(类)


只有在使用默认样式时,它才能正常工作。

这里有几点需要解释,因为过去的设计决策并不像看上去那么简单

  • 默认情况下,使用RemoveFormat仅删除内联样式
  • 要删除“样式”下拉列表应用的块样式,需要在该下拉列表中取消选择它们(它在切换模式下工作)。您将继续使用像H1这样的原始标记,您可以在格式下拉列表的帮助下将其更改为另一个像P这样的标记必须按该顺序进行。
  • 似乎最好的解决方案是覆盖该方法。例如,您只想从h1-h3中删除格式:

    var editor = CKEDITOR.replace('textarea_id');
    editor.on( 'pluginsLoaded', function( ev ) {
        editor.addRemoveFormatFilter( function( element ) {
             return  element.is( 'h3' ) || element.is( 'h1' ) || element.is( 'h2' );
        });             
    });
    
  • 当然,您可以在这里使用更高级的代码,而不仅仅是简单地检查某个元素是否是特定元素。例如,可以使用该方法检查特定元素是否与特定样式匹配


    请注意,有必要选择整个块元素以删除其格式。在某些情况下,例如,包含浮动图像的标题,可能需要使用元素的路径选择此元素,因为使用鼠标很难选择它。

    关注块样式,但如果您对删除内联样式感兴趣,则可以使用
    addRemoveFormatFilter()
    style.checkElementRemovable()
    –它可以正常工作。谢谢!我使用了最新的解决方案。