You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quill.js嵌入视频仅显示“浏览器不支持视频”问题求助

Quill.js视频显示“浏览器不支持视频”的解决办法

问题根源是Quill默认会严格清理插入的HTML,可能把视频播放必需的属性(比如controls、type)给删了,或者对<video>标签的渲染做了限制,导致浏览器认不出这是可播放的视频元素。

具体解决步骤

  • 修改Quill的HTML白名单
    手动配置允许<video>和<source>标签,以及它们的必要属性:

    const quill = new Quill('#editor', {
      modules: {
        toolbar: [/* 你的工具栏配置 */],
        sanitize: {
          allowedTags: ['p', 'br', 'video', 'source'], // 保留原有标签,新增video和source
          allowedAttributes: {
            'video': ['src', 'controls', 'width', 'height', 'autoplay', 'loop'],
            'source': ['src', 'type']
          }
        }
      },
      theme: 'snow'
    });
    
  • 替换Quill默认的视频格式化规则
    Quill自带的视频模块可能会把<video>转成自定义格式,导致渲染异常。自己写个格式化器保留原始标签:

    // 注册自定义视频格式
    Quill.register({
      'formats/video': function() {
        return {
          blotName: 'block',
          tagName: 'VIDEO',
          className: null,
          attributes: ['src', 'controls', 'width', 'height', 'type'], // 保留需要的属性
          children: ['source'] // 允许嵌套source标签
        };
      }
    }, true);
    
  • 跳过Quill的自动格式化(极端情况)
    如果上面的方法都不行,就让Quill直接插入原始HTML,不做处理:

    // 让剪贴板模块跳过视频标签的格式化
    quill.clipboard.addMatcher('video', function(node, delta) {
      return new Delta().insert({ html: node.outerHTML });
    });
    
  • 排查第三方模块冲突
    先把所有第三方嵌入模块删掉,只留核心Quill测试视频能不能正常播放。如果没问题,再逐个加模块,找出哪个模块在干扰渲染。

验证技巧

改完后,插入视频的HTML代码,然后去浏览器开发者工具里查看DOM结构:确认<video>标签的controls、src这些属性都保留着,没被Quill篡改或移除。

内容的提问来源于stack exchange,提问作者Blake Senftner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:40:18