我使用ckeditor的media embed插件。它工作正常,代码正确保存在数据库和youtube,soundcloud等。玩家在页面上显示确定。但是当用户进入他的管理,他可以编辑信息时,内部和标签中的文本没有显示,因此当用户点击保存按钮时,所有先前保存的iframe将被“删除”,只有其余的将保存格式化文本。有没有办法在ckeditor中显示iframe代码?
答案 0 :(得分:41)
我假设您使用Advanced Content Filter(ACF)附带的CKEditor 4.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版本,以便人们可以帮助您。
答案 1 :(得分:22)
CKEDITOR.config.allowedContent = true;
为我工作。
答案 2 :(得分:0)
要允许CKEditor存储自定义HTML而不消失,您需要将允许的内容标志设置为true。
var allowedContent = true; // to allow custom html like iframe or div's
CKEDITOR.replace('yourEditorWindowsId', {
allowedContent
},