CKEditor - 如何在2个编辑器中一起使用高级内容过滤器和小部件

时间:2015-02-25 14:51:56

标签: javascript widget ckeditor

我有2个CKEditor实例。一个编辑器(A)支持多个小部件,另一个编辑器B有一个Advanced Content Filter具有这些设置,以确保只有<p><br><em>和{{1}第二个编辑器中允许使用标签:

<strong>

我的小部件包含图片和其他一些标签以及此过滤器设置:

config.allowedContent = 'p br em strong';

当编辑器A中包含这种小部件的文本被粘贴到编辑器B中时,我希望编辑器去除小部件,但它不会。这是有道理的,因为窗口小部件的allowedContent设置可确保不删除图像。

但是,我的第二个编辑器对这个小部件一无所知,我想配置过滤器来去掉所有粘贴的小部件。

我已尝试将Disallowed Content设置添加到编辑器B:

config.allowedContent = 'img div figure figcaption';

但是如果没有成功,我会继续在编辑器B中获得小部件div。

将小部件粘贴到CKEditor提供的示例编辑器的editor 4中也是如此。即使ACF不允许,也会插入窗口小部件。

是否有其他过滤器选项可防止小部件潜入身体?

1 个答案:

答案 0 :(得分:2)

不幸的是,目前还没有简单的方法来过滤ACF的粘贴事件 - 请参阅http://dev.ckeditor.com/ticket/11115。它已分配4.5.0里程碑,但我觉得我们无法在此版本中进行此更改。有一些架构限制使这张票非常复杂。

您可以尝试拦截editor#paste上的粘贴内容,解析内容并手动过滤粘贴的小部件。困难的事情(实际的#11115阻止程序)是在粘贴的内容中,您将找到小部件的上传版本,包含所有包装器,所有内部属性等.ACF无法直接应用于此内容,因为ACF是应该过滤下载的小部件版本。因此,您需要手动或使用特殊的CKEDITOR.filter实例进行过滤。

您可以发现此问题很有用 - Apply CKEditor Advanced Content Filter to a string