default属性仅标识默认候选轨道,不保证自动显示;是否启用取决于浏览器策略、用户操作历史及vtt加载状态,实际中常因路径错误、mime类型不符、srclang不合规或readystate未就绪导致失效。

default 属性本身不能“设置默认加载”的字幕轨道——它只标识某条轨道为“默认候选”,是否真正启用,由浏览器策略、用户历史和加载状态共同决定。实际开发中,加了 default 却没显示字幕,是普遍且正常的现象。
default 的真实作用
它不是开关,而是提示:当用户首次访问、从未操作过字幕控件、且所有条件都满足时,浏览器*可能*将这条轨道的 mode 设为 "showing"。但这个“可能”非常脆弱:
- 用户只要点过一次字幕按钮(哪怕只是打开菜单),default 就永久失效
- Safari(尤其 iOS)多数情况下直接忽略 default,移动端私密模式下甚至不解析该 track
- Chrome 可能启用,Firefox 则更倾向保持 "disabled"
- 多个 track 都写 default,浏览器通常只认第一个,其余静默作废
为什么写了 default 却找不到或不显示
根本原因往往不是 default 失效,而是轨道压根没加载成功——浏览器对此过程几乎不报错:
- VTT 文件路径错误(如相对路径写错、file:// 协议下跨域被禁)→ track 不进 textTracks 列表
- 服务器未返回 Content-Type: text/vtt → Safari 会直接跳过解析
- VTT 文件格式非法(缺 WEBVTT 开头、时间戳毫秒位不足三位、含 BOM)→ readyState = 0(not loaded)
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











