我使用ckeditor的媒体嵌入插件。它工作正常,代码已正确保存在数据库和youtube,soundcloud等中。播放器在页面上显示确定。但是,当用户进入其可以编辑信息的管理部门时,其内部和带有标记的文本不会显示,因此,当用户单击“保存”按钮时,所有先前保存的iframe将被“删除”,其余的将被删除。的格式化文本将被保存。有什么方法可以在ckeditor中显示iframe代码吗?
我假设您使用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
,那么有几种解决方法:
config.extraAllowedContent
使其再次恢复。虽然第一个solution is straightforward,但第二个对您来说可能很棘手。 mediaembed插件的allowedContent
规则如下(请参见plugin's code):
allowedContent: 'iframe[*]' // stands for: iframe element with any attribute
[如果将以下内容添加到后端编辑器的配置中,则内容将返回iframe,而无需加载mediaembed插件:
config.extraAllowedContent = 'iframe[*]'
如果此解决方案不适合您,请提供编辑器配置和CKEditor版本,以便人们可以为您提供帮助。
CKEDITOR.config.allowedContent = true;
为了允许CKEditor存储自定义HTML而不消失,您需要将允许的内容标志设置为true。