Laravel框架下TinyMCE自动删除iframe内容该如何解决?
TinyMCE 阻止iframe被自动清除的解决步骤
- 首先修正TinyMCE前端配置,不要只单独设置
extended_valid_elements,确保以下参数都正确配置:
tinymce.init({ // 保留你原有的其他配置项 // 1. 明确将iframe纳入有效元素范围 valid_elements: '*[*]', // 若需要严格控制属性,可替换为指定属性的写法:iframe[src|width|height|frameborder|allow|allowfullscreen] // 2. 配置iframe允许的所有属性,避免iVoox平台的特殊属性被过滤 extended_valid_elements: 'iframe[*]', // 3. 检查invalid_elements配置,确保没有把iframe加入无效元素列表,有则删除列表中的iframe // invalid_elements: 'iframe,script' 错误写法,需要移除iframe // 4. 配置保护规则,让TinyMCE跳过对iframe标签的清理 protect: [ /<\/?iframe[^>]*>/g ], // 5. 若为粘贴插入iframe,关闭过度的粘贴过滤 paste_enable_default_filters: false, paste_remove_styles: false, })
- 检查Laravel后端的内容过滤逻辑:
多数情况下前端TinyMCE已经保留了iframe内容,但是提交后被后端过滤规则清除:- 检查是否使用了
laravel-htmlpurifier等第三方XSS过滤包,在对应配置文件的允许标签列表中加入iframe,同时配置允许iframe的相关属性 - 检查模型修改器、全局中间件中是否有自定义的标签清理逻辑,排除对iframe标签的过滤
- 前端输出富文本内容时,不要使用
{{ }}自动转义语法,要使用{!! $content !!}语法才能完整保留HTML标签
- 检查是否使用了
内容的提问来源于stack exchange,提问作者Bernadí Mateu Gomila
相关产品推荐
相关产品推荐

