iframe - ckeditor不读取媒体嵌入代码

标签 iframe ckeditor embed media

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

最佳答案

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

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

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

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

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

如果是false,那么有几种解决您的问题的方法:
  • 在后端编辑器中启用mediaembed插件(使用工具栏中的按钮)。
  • 扩展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版本,以便人们可以为您提供帮助。

    关于iframe - ckeditor不读取媒体嵌入代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16975859/

    相关文章:

    javascript - IE中的jQuery onClick()声音效果和重定向

    html - 如何缩小此 iFrame 的内容?

    c# - 在 ASP.NET 页面中加载 iframe

    javascript - 本德尔.js 错误 : 'module' is undefined

    javascript - 无法创建 'System.Boolean' 类型的对象

    jquery - 覆盖 iframe 的 CSS 高度 0 和宽度 0

    javascript - 在框架内调用特定的 id

    javascript - 在 IE 11 中打印 Iframe 仅打印第一页

    php - 使用 CkEditor 显示保存在数据库中的文本(HTML)

    ckeditor - 将图像插入CKEditor