track元素是声明外部文本轨道的连接器,不渲染内容;失效主因是位置错误、属性缺失、VTT格式错或响应头不合规,须写全kind、srclang、label、src四属性且位置必须为video直接子元素并在source之后。

track 元素不是字幕本身,而是声明外部文本轨道的“连接器”
它不渲染内容,也不内嵌文字,只告诉浏览器:“这里有一个 WebVTT 文件,按这个规则加载和解释”。如果 track 写对了但字幕没出来,问题几乎一定出在四个地方:位置不对、属性缺失、VTT 文件格式错、服务端响应头不合规——而且浏览器通常沉默不报错。
必须写全的四个核心属性:kind、srclang、label、src
缺任意一个,track 在多数浏览器中就形同虚设,尤其 Safari 和移动端会直接跳过加载。
-
kind:必须是subtitles、captions、descriptions、chapters或metadata之一;多语言字幕场景下务必用subtitles(captions虽也支持srclang,但语义上强调听障辅助,部分系统偏好自动启用) -
srclang:ISO 639-1 语言码(如zh、en、ja),不是zh-CN这类区域码;浏览器靠它匹配用户系统语言并高亮推荐轨道 -
label:用户在右键字幕菜单里看到的名字,比如中文(简体)或English (CC);不能为空,否则菜单项可能显示为“Unknown”或直接消失 -
src:必须是有效 URL,且文件需返回Content-Type: text/vtt;若跨域,服务端还必须带Access-Control-Allow-Origin头,否则静默失败
default 属性的实际效果很有限
它只表示“当用户没手动选择时,可作为 fallback 启用”,但不等于“自动显示”。iOS/iPadOS Safari 完全忽略 default,track.mode 默认始终是 "disabled";Chrome 和桌面 Firefox 会启用,但前提是 kind 和 srclang 都合法,且 VTT 文件能成功加载。
从零开始创建惊艳、动画丰富且自包含的 HTML 演示文稿,或通过转换 PowerPoint 文件生成。当用户希望制作幻灯片、构建演示文稿、打造路演资料(pitch deck)、将 PPT/PPTX 转换为网页格式,或增强现有 HTML 演示文稿时,应使用此能力。该能力帮助用户通过视觉预览而非抽象选项来发掘自身审美偏好。
- 不要依赖
default实现默认可见——得用 JS 主动设video.textTracks[i].mode = "showing" - 同一
video中只能有一个default,多个会全部失效 -
default对kind="metadata"或"descriptions"无效,这些类型本就不面向用户显示
位置错误是最隐蔽的失效原因
track 必须是 video 的**直接子元素**,且严格位于所有 source 标签之后、video 结束标签之前。任何嵌套、错序、动态插入都会让浏览器彻底忽略它。
立即学习“前端免费学习笔记(深入)”;
- ❌ 错误:
<video><div><track ...></track></div></video> - ❌ 错误:
<video><track ...><source ...></source></track></video>(track在source前) - ❌ 错误:用 JS 创建
track并appendChild到已渲染的video上(DOM 已挂载,浏览器不重新解析) - ✅ 正确:
<video><source ...><track ...></track></source></video>
真正容易被忽略的是:即使 HTML 结构完全正确,只要服务端返回的 .vtt 文件带 BOM 或时间戳毫秒位不是三位(如 00:01:02.5 而非 00:01:02.500),整个轨道也会加载失败且无提示。


















