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

标签 javascript widget ckeditor

我有 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/

相关文章:

javascript - .ajax jquery 不适用于数组大小 $_files

javascript - 如何在 Ipython Notebook 中制作多文件上传小部件?

python - pyqt:如何删除小部件?

python - Django ImageField 未呈现 ClearableFileInput

javascript - 如何禁用 CkEditor 表属性中的标题?

javascript - 更改 CKEditor autoGrow_maxHeight

javascript - 1 大概不等于 1

javascript - 当输入类型 "file"不为空时,如何在JS中显示按钮类型?

javascript - 从 Sails.js 中的关联模型访问模型的属性

javascript - CKEditor setData 未清除或更改 rte 中的文本