配置CKEditor pasteFilter去除某些内联样式

时间:2019-03-27 19:26:33

标签: ckeditor

我的涉众正在Drupal(8.6.13)中使用CKEditor 4.10.1版本。

他们有一个用例,经常从Google Docs复制并粘贴到WYSIWYG文本区域。 Google使用内联CSS属性。这是一个示例:

<span style="font-size:36pt;font-family:Merriweather;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Your Name</span></p>

它们通常必须更改文本的大小以及字体的大小。在上面的示例中,它们是font-size:36pt;font-family:Merriweather;标记中的style

我正在查看pasteFilter配置指令。在示例中,它们显示了如何过滤某些标签以及具有某些属性的标签:

config.pasteFilter = 'h1 h2 p ul ol li; img[!src, alt]; a[!href]';

但是,我要删除的只是某些CSS样式。例如,如果粘贴输入为

 <span style="font-size:36pt;font-family:Merriweather;vertical-align:baseline;">Hello</span>

然后我想让源阅读

 <span style="vertical-align:baseline;">Hello</span>

即仅font-size:36pt;font-family:Merriweather;被删除。 (而且我想删除任何font-sizefont-family规范。)

pasteFilter有可能吗?如果是这样,我该如何表达?

编辑白名单解决方案不符合我们的接受标准,因为我的涉众希望保留其他指令,例如粗体,斜体等。我们不想删除 all < / em>样式或整个span标签;我们只想删除font-sizefont-family

1 个答案:

答案 0 :(得分:1)

根据How to Allow Everything Except…,您可以使用:

config.allowedContent = {
    $1: {
        // Use the ability to specify elements as an object.
        elements: CKEDITOR.dtd,
        attributes: true,
        styles: true,
        classes: true
    }
};
config.disallowedContent = '*{font*}';
// if you want to be more specific: config.disallowedContent = 'span{font-size,font-family}';

我对其进行了测试,并且可以正常工作,请亲身体验我创建的JSFiddle