我假设您使用附带的 CKEditor 4.1.x高级内容过滤器 http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter(ACF)。最有可能的是,您使用不同的编辑器进行前端/后端编辑。
每个插件都扩展了允许的内容 http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent具有自己的标签、属性和类规则的属性。使用这些规则,编辑器会自动删除不需要的内容,例如,如果您的前端编辑器允许<iframe>
因为它加载了 mediaembed 插件,那么没有此插件的后端编辑器将删除您的<iframe>
从内容来看。
此外,ACF 还会观察您的工具栏配置,因此即使您包含该插件但您不希望该按钮出现在工具栏中,该按钮提供的任何内容(即<iframe>
) 也将在编辑器的输出中被禁止。
您可以轻松检查您的编辑是否接受<iframes>
。基本上调用以下命令并查看输出:
CKEDITOR.instances.yourInstance.filter.check( 'iframe' );
>>> true // it's allowed
If it's false
,那么您的问题有几种解决方案:
- 在后端编辑器中启用 mediaembed 插件(使用工具栏中的按钮)。
- Extend
config.extraAllowedContent
再次取回它。
虽然第一个解决方案很简单 http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-plugins,第二个对你来说可能很棘手。allowedContent
mediaembed 插件的规则如下(参见插件的代码 https://github.com/frozeman/MediaEmbed/blob/master/mediaembed/plugin.js):
allowedContent: 'iframe[*]' // stands for: iframe element with any attribute
如果将以下内容添加到后端编辑器的配置中,则无需加载 mediaembed 插件即可在内容中重新显示 iframe:
config.extraAllowedContent = 'iframe[*]'
如果此解决方案不适合您,请提供编辑器配置和 CKEditor 版本,以便人们可以帮助您。