配置 CKEditor pasteFilter 去除某些内联样式
configuring CKEditor pasteFilter to strip out certain inline styles
我的利益相关者在 Drupal (8.6.13) 中使用 CKEditor 4.10.1 版。
他们有一个用例,他们经常从 Google 文档复制并粘贴到 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>
他们经常需要更改文本的大小以及字体。在上面的示例中,这些是 style
标记中的 font-size:36pt;font-family:Merriweather;
。
我正在查看 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-size
和 font-family
规范。)
pasteFilter
可以吗?如果是,我该如何表达?
Edit 白名单解决方案不符合我们的验收标准,因为我的利益相关者希望保留其他指令,例如粗体、斜体等。我们不想剥离全部 样式,或整个 span
标签;我们只想删除 font-size
和 font-family
.
根据How to Allow Everything Except…,您可以使用:
config.allowedContent = {
: {
// 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 中亲眼看看。
我的利益相关者在 Drupal (8.6.13) 中使用 CKEditor 4.10.1 版。
他们有一个用例,他们经常从 Google 文档复制并粘贴到 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>
他们经常需要更改文本的大小以及字体。在上面的示例中,这些是 style
标记中的 font-size:36pt;font-family:Merriweather;
。
我正在查看 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-size
和 font-family
规范。)
pasteFilter
可以吗?如果是,我该如何表达?
Edit 白名单解决方案不符合我们的验收标准,因为我的利益相关者希望保留其他指令,例如粗体、斜体等。我们不想剥离全部 样式,或整个 span
标签;我们只想删除 font-size
和 font-family
.
根据How to Allow Everything Except…,您可以使用:
config.allowedContent = {
: {
// 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 中亲眼看看。