我有 2 个 CKEditor 实例。一个编辑器 (A) 支持多个小部件,另一个编辑器 B 有一个 Advanced Content Filter,这些设置确保在第二个编辑器中只允许 <p>
、 <br>
、 <em>
和 <strong>
标签:
config.allowedContent = 'p br em strong';
我的小部件包含图像和一些其他标签以及此过滤器设置:
config.allowedContent = 'img div figure figcaption';
当包含来自编辑器 A 的此类小部件的文本被粘贴到编辑器 B 中时,我希望编辑器删除该小部件,但事实并非如此。这是有道理的,因为小部件的 allowedContent 设置确保图像不会被删除。
但是,我的第二个编辑器对这个小部件一无所知,我想配置过滤器以去除所有粘贴的小部件。
我已经尝试将 Disallowed Content 设置添加到编辑器 B:
config.disallowedContent = 'img div span figure figcaption';
但没有成功,我一直在编辑器 B 中获取小部件 div。
将小部件粘贴到 CKEditor 提供的示例编辑器的 editor 4 中也是如此。即使 ACF 不允许,也会插入小部件。
是否有另一个过滤器选项来防止小部件潜入正文?
最佳答案
不幸的是,目前没有简单的方法可以使用 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 .
关于javascript - CKEditor - 如何在 2 个编辑器中一起使用高级内容过滤器和小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28722121/