E6.03.3announced validation设计
提示需同时被辅助技术播报
别名: 校验播报 · live region · 屏幕阅读器错误
概念解释
字段旁出现红字,对看得见布局的人是一条新刺激;对屏幕阅读器和部分放大工具却只是文档里多了一个节点,不会自动被读出来。播报(announcement)指校验结果作为状态变化,被辅助技术在发生的那一刻说出来,而不是等用户自己把虚拟光标移到那一行。紧邻解决「错在哪个字段」,播报解决「发生了这件事」。两者同时成立,内联校验才对不看屏幕的操作路径有效。只把字写在框下、不送进实时区域,等于这套机制对辅助技术用户不存在。
机制
屏幕阅读器跟的是焦点和用户主动探索,不跟像素突变。失焦校验发生时,焦点往往已经走到下一个字段,新插入的错误文本不在阅读游标上,用户会在下一个标签处继续填,直到提交被拒。提交时若只把视觉滚到错误处而不移动焦点、不朗读,依赖视觉的滚动对辅助技术没有对应物。即使用了实时区域,礼貌度(politeness)也决定打断程度:过于强硬会打断正在读的标签;过于礼貌又会被当前朗读队列排到用户已经开始输入之后。字段的可访问名称还要把错误状态算进去,否则用户回到该框时只听到原来的标签,听不出「这一项仍是错的」。
边界
逐键校验会产生连续播报,每个字母都说「格式不对」会让输入本身不可用,应在停顿或失焦后再宣布。成功通过的校验不必条条报「正确」,否则噪声会把真正的错误淹没;例外是用户刚修完一条错误,需要一句简短确认才能知道可以往下走。实时区域若绑在整张表单上,一次提交十个错误会连读成一段无法行动的长文,应先宣布错误数量并把焦点放进第一条。自动播放的语音与系统阅读器叠在一起时,应只留辅助技术这一条通道,不要再外挂一套旁白。
怎么落地
- 错误文本与字段在可访问树上关联,并在出现时通过实时区域或焦点移动被朗读;不能只改颜色。
- 提交失败时把焦点送到第一条错误字段,让阅读器从该字段的名称加错误文本开始,而不是停在提交按钮上。
- 控制播报频率:失焦或提交时宣布,输入过程中节流;修复后可用一句短确认,不要对每个合法按键祝贺。
- 验证:只用键盘和屏幕阅读器走一遍故意填错的表单。听不到错误、听到但找不到字段、或每敲一键都被打断,都算播报失败。