label 是 track 元素的强制必需属性,必须与合法 kind 和规范 srclang 同时存在才生效;空值或缺失会导致字幕不显示于浏览器菜单,命名需清晰简短(≤24 字)、面向用户理解而非机器识别。

label 不填或填空,字幕菜单直接消失
浏览器原生字幕菜单(比如 Chrome 右下角 CC 按钮、Safari 的「字幕」下拉)不会显示任何选项,哪怕 src 和 srclang 都正确。不是加载失败,是根本没进菜单列表——label 是强制必需属性,空字符串 label="" 在 Safari 和旧版 Edge 中可能被完全忽略,Chrome 则 fallback 到 srclang 值(如显示 “zh”),但不可靠。
label 必须和 kind、srclang 同时存在才生效
单独写 label="English" 没用;必须搭配合法 kind(如 subtitles、captions)和规范 srclang(如 en、zh-Hans)。否则整条 <track></track> 被浏览器静默丢弃:
-
<track src="en.vtt" kind="subtitles" label="English"></track>→ 缺srclang,不显示 -
<track src="en.vtt" kind="subtitles" srclang="en" label="English"></track>→ 正确,菜单显示 “English” -
<track src="zh.vtt" kind="subtitles" srclang="zxx" label="中文"></track>→srclang="zxx"表示“非语言内容”,多数浏览器拒绝渲染
多条同语言字幕共存,label 重复就只显示一个
Chrome 和 Safari 严格遵循规范:同一 kind + 同一 srclang 下,label 必须唯一。哪怕 srclang 写得再细(如 zh-Hans 和 zh-CN),只要浏览器认为语种重叠,重复 label 就会导致后加的轨道被跳过:
- ❌ 危险:
label="中文"+srclang="zh",另一条也label="中文"+srclang="zh-Hans" - ✅ 安全:
label="中文(官方)"+srclang="zh",另一条label="中文(AI生成)"+srclang="zh" - ✅ 安全:
label="简体中文"+srclang="zh-Hans",另一条label="繁體中文"+srclang="zh-Hant"
label 命名要让人一眼分清,不是写给机器看的
它不参与语言匹配、不触发自动翻译、不响应系统语言切换——纯属 UI 层展示文本。所以别写 zh-Hans 或 vtt-002,而要写用户能立刻理解的内容:
- 标注来源或用途:
label="English (CC)"、label="Japanese (with furigana)" - 区分生成方式:
label="Chinese (Human-translated)"、label="Chinese (AI-generated, v2.3)" - 长度控制在 24 字以内,避免 Safari 截断;不包含 HTML 实体或换行符(
&就是 &,不会转义)
srclang 和用户系统设置,label 只负责让用户在菜单里不点错。名字起得含糊,等于把选择权交给了随机性。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











