无障碍设计:从第一行代码起的尊重
|
无障碍设计:从第一行代码起的尊重——这行字我去年暑假贴在工位隔板上,油性笔写的,蹭花了右下角“尊重”两个字的捺。那天在杭州西湖区残联做志愿测试,用NVDA读取我们刚上线的医保小程序,屏幕阅读器念到“提交按钮”时卡了7.3秒——因为button没加aria-label,只靠CSS伪元素画了个图标。 我改了三遍。第一次加role="button",NVDA还是跳过;第二次补了aria-label="确认提交参保信息",但语音流把“参保”读成“参-保”,停顿像断气;第三次终于用aria-labelledby指向一个隐藏span,里面写“确认提交2024年度城乡居民基本医疗保险参保信息”,长度28个汉字,NVDA读完用了4.1秒——比正常语速慢18%,但用户张阿姨(62岁,视网膜色素变性,左眼光感,右眼0.05)说:“这次听清了,不是‘参-保’,是‘参保’。”她用指尖摩挲手机边缘测出屏幕朝向,然后把手机转了15度,说这样更稳。 新技术真快。 去年暑假那周,我连着五天泡在西湖区社区卫生服务中心的康复科候诊区改代码。他们HIS系统里嵌着的挂号页,表单域用div模拟select,键盘Tab键根本进不去选项区;更荒谬的是,整个页面viewport width硬设为320px,导致VoiceOver在iPhone上放大后文字全部叠在一起——而中心医生告诉我,他们去年接诊的视障患者中,67%用iPhone,其中41%主用VoiceOver而非Zoom。我当场用Xcode跑真机调试,发现iOS 17.5的VoiceOver有个鲜为人知的bug:当里混着高亮文本时,双指轻扫会跳过所有span,除非在span上手动加role="text"。这个细节没人写进WCAG文档,是我和康复科护士长林桦(她丈夫是视障程序员)用三台iPhone轮流试出来的。 失败案例?有。前年做的某政务OCR识别工具,号称“AI自动补全身份证字段”。它能识别手写体“王小明”,却把“视力残疾二级”的“二”识别成“弌”(古体字),结果生成的电子证照里,“残疾等级”字段显示为“弌级”。残联工作人员手工驳回了237份申请,平均处理耗时11分43秒每份。我们后来发现,模型训练集里根本没有“弌”这个字——它根本不是OCR错误,是Unicode映射层把“二”的某些扫描变形误判为CJK兼容汉字U+5F0C。修复方案土得掉渣:白名单拦截所有U+5F00–U+5FFF区间字符,强制转为ASCII数字。但这事儿谁会想到?连甲方验收报告里写的都是“识别准确率99.2%”,没人提“弌”。 我认为它优点在新技术。 我见过最狠的改进,是把Web Speech API和aria-live组合起来——不是简单播提示音,而是实时监听语音指令,同时用aria-live="polite"动态注入反馈节点。上周在绍兴聋协听障者编程工作坊,14岁的阿哲(双侧极重度听力损失,戴人工耳蜗)用这个功能,对着麦克风说“我要查越城区2024年第三季度残疾人补贴发放状态”,页面立刻滚动到对应表格行,且该行背景色由#f8f9fa渐变为#e2e3e5,持续1.8秒。他没看屏幕,是凭耳蜗感受到的震动节奏判断操作成功。这个交互路径,纯靠CSS动画+ARIA属性+SpeechRecognition事件链完成,没调任何SDK。我问阿哲:“如果下次你想说方言呢?”他笑着敲键盘打字:“老师,绍兴话‘发’跟‘罚’同音,你们API认不认?”——那一刻我意识到,所谓“从第一行代码起的尊重”,不是写个alt属性就完事,是你得预判对方的发音肌肉记忆、手指颤抖频率、甚至人工耳蜗电极阵列的刺激阈值。
文章配图,仅供参考 目前我卡在表单验证的错误提示逻辑上。已实现aria-invalid="true",但WCAG要求错误信息必须与输入框有明确关系绑定——可当用户用Switch Control快速切换时,焦点跳转延迟常导致提示弹窗还没加载完。上周试了5种方案,最稳的是用IntersectionObserver监听提示框进入视口,再delay 120ms触发aria-live更新。但我不确定这120ms是否适用于所有Android版本。你要是刚好在测小米14 Ultra上TalkBack v14.2的焦点链响应,能不能帮我看一眼? (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


MySQL事务控制无障碍设计实战指南