controlslist="nodownload"在Firefox是否被忽略?

作者:袖梨 2026-08-05

controlslist="nodownload"在Firefox是否被忽略?并不只看表面做法,关键还要理解相关条件、限制和后续影响。

Firefox 官方明确不支持 controlslist 属性,包括 nodownload;即使在 Chrome/Edge 中生效,它也仅隐藏下载按钮,无法阻止右键另存或网络抓包;真正防下载需组合 JS 和 CSS 手段,或彻底自定义控件。

是的,controlslist="nodownload" 在 Firefox 中完全被忽略,且官方明确不计划支持。

Firefox 对 controlslist 的真实态度

这不是兼容性“待完善”,而是主动放弃。Mozilla 官方已明确表示:不会实现 controlslist 属性的任何值(包括 nodownloadnofullscreen 等)。这意味着:

  1. 即使你写了 <video controls controlslist="nodownload">,Firefox 仍会照常显示下载按钮
  2. JavaScript 检测 'controlsList' in document.createElement('video') 在 Firefox 中恒为 false
  3. 不要指望未来版本“某天突然支持”——这是策略性不支持,不是 bug

为什么不能只靠 controlslist 防下载

即便在 Chrome/Edge 中生效,nodownload 也只是移除 UI 按钮,它不阻止:

  1. 用户右键 → “另存为视频”(仍可用)
  2. 开发者工具中直接提取 <source>src 地址
  3. 网络面板里抓取 m3u8 或 MP4 请求

真正起作用的是组合手段:controlslist="nodownload" + oncontextmenu="return false;" + style="pointer-events: none;"(注意:后者会同时禁用所有鼠标交互,需权衡可访问性)

Firefox 下想隐藏下载按钮,只能换思路

删掉 controls 属性,自己用 JS 实现最小控件集,是目前唯一可靠路径。例如:

<video id="myVideo" src="lesson.mp4"></video><button onclick="document.getElementById('myVideo').play()">播放</button>

这样做的代价很实在:

  1. 必须手动监听 canplaythrough 才能启用按钮
  2. iOS 上必须由用户手势触发 play(),否则静音也不行
  3. 无法复用原生进度条、音量滑块等——全得重写,含键盘导航和屏幕阅读器适配

所以别把 controlslist 当成“防下载开关”,它只是 UI 层的视觉过滤器;而 Firefox 连这个过滤器都不装。

相关文章

精彩推荐