J5.02.3name role value设计研究

名称、角色、状态三者缺一即不可用

别名: 名称角色状态 · name role state · NRV

概念解释

阅读器典型的一句是「通知,按钮,已折叠」。名称回答这是哪个,角色回答这是什么,状态(以及取值)回答它现在怎样。三者里缺任何一项,这个控件对辅助技术用户就不可用:找不到、不会用,或用了也不知道结果。

机制

辅助技术把一个对象收成三个槽位再读出来。名称是检索键——没有名称,类型列表里是一排「按钮」,用户无法点名选中。角色是操作脚本——没有角色,名称只是一段静态文字,用户不会去激活。状态是当前条件——没有状态,开关被按了也不知道开着还是关着,等于在盲盒上操作。

三个槽位回答三个不同的问题,不能互相顶替。把名称写得很长来暗示「这是开关」补不上角色;把角色报得很清楚也说不出「这是哪一个」。缺一项不是体验差一档,是这条对象从可操作集合里掉出去。

怎么研究

在同一控件上分别拿掉名称、拿掉角色、拿掉状态,让阅读器用户完成「找到、操作、确认结果」。

自变量:三个槽位各自在场或缺席。 因变量:能否在列表里点名、首次操作是否按对脚本、操作后能否报告当前条件。

用开关、展开按钮、选项卡这类状态会变的控件,静态链接测不出状态槽位。对照 NVDA、JAWS、VoiceOver 的实际句子,确认缺席是「没报」而不是「报了但人没注意」。

边界

纯展示的文字本来就没有角色和状态,缺这两项不是缺陷。装饰被正确隐藏时三个槽位都可以空。部分平台把取值和状态并在一个字段里暴露,缺的是「当前条件」这个槽位,不拘泥于字段名叫 state 还是 value。名称来自哪里、是否和可见文字一致,是下一层计算问题,这里只问三个槽位在不在。

怎么落地

  • 每个可操作对象同时提供能点名的名称、与行为一致的角色、以及会随操作改变的状态。
  • 开关、选中、展开、禁用这类条件必须被读出来,不能只改外观。
  • 验证:听一句完整播报,标出名称、角色、状态三个槽。任一只空着,就让阅读器用户只靠这一句去找、去按、去确认——空掉的那只决定了哪一步会失败。

延伸

  • 同组J5.02.1 辅助技术读取的是无障碍树而非视觉呈现 · J5.02.2 角色决定用户可预期的操作方式
  • 相邻J5.10 名称、角色与状态 · J3.01 键盘可达
  • 站内检索name role value · name role state · accessible name

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/J5.02.3