ckeditor无法读取媒体嵌入代码

问题描述 投票:18回答:3

我使用ckeditor的媒体嵌入插件。它工作正常,代码已正确保存在数据库和youtube,soundcloud等中。播放器在页面上显示确定。但是,当用户进入其可以编辑信息的管理部门时,其内部和带有标记的文本不会显示,因此,当用户单击“保存”按钮时,所有先前保存的iframe将被“删除”,其余的将被删除。的格式化文本将被保存。有什么方法可以在ckeditor中显示iframe代码吗?

iframe ckeditor embed media
3个回答
41
投票

我假设您使用Advanced Content Filter(ACF)随附的CKEditor4.1.x。最可能的是,您使用不同的编辑器进行前端/后端编辑。

每个插件使用自己的标记,属性和类规则扩展allowedContent属性。使用这些规则,编辑器会自动剥离不需要的内容,因此,例如,如果前端编辑器允许<iframe>加载了Mediaembed插件,则您的后端编辑器将从该内容中删除<iframe>

此外,ACF还会观察您的工具栏配置,因此即使您包括插件,但又不想在工具栏中使用该按钮,该按钮提供的任何内容(即<iframe>)也将在编辑器的输出中被禁止。

您可以轻松地检查编辑器是否接受<iframes>。基本上调用以下命令,然后查看输出:

CKEDITOR.instances.yourInstance.filter.check( 'iframe' );
>>> true // it's allowed

如果为false,那么有几种解决方法:

  1. 在后端编辑器中启用mediaembed插件(使用工具栏中的按钮)。>>
  2. 扩展config.extraAllowedContent使其再次恢复。
  3. 虽然第一个solution is straightforward,但第二个对您来说可能很棘手。 mediaembed插件的allowedContent规则如下(请参见plugin's code):

allowedContent: 'iframe[*]' // stands for: iframe element with any attribute

[如果将以下内容添加到后端编辑器的配置中,则内容将返回iframe,而无需加载mediaembed插件:

config.extraAllowedContent = 'iframe[*]'

如果此解决方案不适合您,请提供编辑器配置和CKEditor版本,以便人们可以为您提供帮助。


23
投票
CKEDITOR.config.allowedContent = true;

0
投票

为了允许CKEditor存储自定义HTML而不消失,您需要将允许的内容标志设置为true。

© www.soinside.com 2019 - 2024. All rights reserved.