CKEditor4配置与开发详细中文说明文档(9)

 4、高级内容过滤器

介绍

注意:高级内容过滤器是在CKEditor 4.1中引入的。

什么是高级内容过滤器(ACF)?

ACF是自CKEditor 4.1可用的高度可配置的CKEditor核心特色功能。它限制和适配输入的数据(在源代码模式中或由editor.setData方法添加的HTML代码,粘贴的HTML代码,等等),因此它可以以更可行的方式配置编辑器的配置。它也可以使生成配置不允许的HTML代码的功能无效。

高级内容过滤器有两种工作模式:

1、自动模式-过虑器由编辑器功能(如插件,按钮和命令)进行配置,这些功能是由配
置选项,如CKEDITOR.config.plugins、 CKEDITOR.config.extraPlugins和 CKEDITOR.config.toolbar,来启用的。

2、 定制模式-由CKEDITOR.config.allowedContent选项来配置过滤器,并且只有与此设置匹配的功能才被激活。
在两种模式中,可以通过使用CKEDITOR.config.extraAllowedContent设置来扩展过滤器的配置。

如果想使高级内容过滤器不起作用,将CKEDITOR.config.allowedContent设置为"true"。所有可用的编辑器功能将被激活,并且将不会过滤输入的数据。

自动模式

当没有提供CKEDITOR.config.allowedContent设置时,高级内容过滤器工作于自动模式。在编辑器初始化时,编辑功能将其规则添加到过滤器。因此,只允许使用当前加载的功能可以编辑的内容,其余所有内容都被过滤掉。
下面的例子或许可以较容易地理解ACF的自动模式。

1. 从完全或标准CKEditor包中打开datafiltering.html例子(基本包提供的功能集太有限了)。

2. 勾选editor 1。它使用默认的配置,所以所有包中可用的按钮、按键或样式都是有效
的,并且编辑器的内容也与最初加载的内容一样(除了标准包中的很小细节--因为标准包不包括 Justify(调整版面)插件,页脚没有向右对齐)。

3. 现在勾选editor 4。你可以看到很多插件和按钮被CKEDITOR.config.removePlugins和 CKEDITOR.config.removeButtons移除了;CKEDITOR.config.format_tags列表也被缩减了。配置的改变自动反映在了编辑器的内容中了--Image工具栏按钮没有了,故在内容中也就不存在图像了;Table插件没有了,故添加在原始内容中的表格也被移除了。你可以在源代码模式中看一下编辑器是如何清除粘贴的内容或HTML代码。

如果想将编辑器配置为工作于自动模式,但需要附加的HTML标记、属性、样式或类生效,可以使用CKEDITOR.config.extraAllowedContent配置选项。

定制模式

当定义了CKEDITOR.config.allowedContent设置后,高级内容过滤器就工作于定制模式。此配置选项告诉过滤器允许哪些HTML元素、属性、样式和类。基于默认的规则(称为允许内容规则--Allowed Content Rules),编辑器过滤输入的数据,决定哪些功能生效。