aria-braillelabel和aria-brailledescription不存在于HTML规范中,属无效属性;实际有效的是aria-label、aria-labelledby和aria-describedby,其中前两者提供可访问名称并影响盲文显示,后者关联补充描述且需用户主动查询才可能呈现。

aria-braillelabel 和 aria-brailledescription 根本不存在
HTML 规范里没有 aria-braillelabel 或 aria-brailledescription 这两个属性。你查不到它们的定义,浏览器不会解析,屏幕阅读器也不会读取——它们是无效的 ARIA 属性,纯属拼写错误或混淆产物。
实际被标准化、有明确语义且被部分辅助技术(含盲文终端)支持的是:
-
aria-label:覆盖元素的可访问名称,影响屏幕阅读器和盲文显示 -
aria-labelledby:通过 ID 引用其他元素文本作为可访问名称 -
aria-describedby:用于关联描述性文本(如提示、错误信息),部分盲文设备会按需呈现其内容(非强制、依赖用户设置和设备能力)
盲文终端如何获取和呈现文本
盲文设备(如 refreshable braille display)本身不直接“读取” ARIA 属性,而是依赖操作系统/辅助技术栈(如 Windows NVDA、macOS VoiceOver、Linux Orca)把 DOM 的可访问树转换成线性文本流,再由盲文驱动程序映射为盲文点字。关键链路是:
- 元素必须有有效的可访问名称(
aria-label或aria-labelledby优先于 innerText) - 描述性文本需通过
aria-describedby显式关联,且目标元素需可访问(不能aria-hidden="true") - 盲文设备默认只显示焦点所在行或当前导航项的可访问名称;长描述默认不自动滚动显示,需用户手动请求(如按“显示描述”快捷键)
示例:
立即学习“前端免费学习笔记(深入)”;
<button aria-label="删除文件" aria-describedby="del-hint">×</button> <div id="del-hint" class="sr-only">永久移除,不可恢复</div>
这里 aria-label 决定盲文屏首行显示 “删除文件”,aria-describedby 关联的文本仅在用户主动查询时才可能以盲文形式呈现。
为什么加了 aria-describedby 却没出现在盲文屏上
这不是 bug,而是行为符合规范:盲文设备空间有限(通常 20–40 字符),不会默认展开所有描述。常见原因包括:
- 目标描述元素被
display: none或visibility: hidden隐藏 → 改用clip-path+border: 0+width: 1px等 sr-only 技巧 - 盲文设备未启用“描述自动播报”模式(NVDA 默认关闭,需在“偏好设置→盲文→描述性文本”中开启)
- 描述文本含复杂结构(如嵌套列表、链接)→ 盲文驱动通常只提取纯文本,忽略标签语义,若内容为空或仅含空格则忽略
- 使用了
aria-hidden="true"在描述容器上 → 必须移除
真正影响盲文输出的实操要点
别纠结不存在的属性。聚焦以下三点:
- 用
aria-label提供简洁、无歧义的可访问名称(盲文屏第一眼看到的内容) - 用
aria-describedby关联简短补充说明(≤ 80 字符,避免句号后跟空格,盲文点字对空格敏感) - 测试时真机连接盲文设备(如 HumanWare Brailliant、APH RefreshaBraille),不要只靠屏幕阅读器语音验证
盲文输出不是“渲染即可见”,它依赖用户操作路径和设备配置。最常被忽略的是:描述文本是否真的能被辅助技术“看见”——检查 Chrome 的 Accessibility DevTools 里的 “Name & Description” 面板,确认 description 字段有值且非空。



















