无障碍设计:从第一行代码践行技术尊重
|
去年七月份,选题会被毙了。我捏着那张A4纸站在门口,纸角被汗洇出一块浅黄——不是咖啡渍,是手汗。总编把笔搁在笔记本上,那支笔没动过,笔帽还拧得严丝合缝,像刚从文具店拆封。我原以为是排期问题,结果他抬眼说:“无障碍?太软。” 我当场扫码——先对准二维码左上角,手机歪了三度,又退半步,再压低手腕,光标抖了两下才咬住。扫完点开链接,页面加载时我盯着那个旋转小圈看了十八分钟,其实也就两秒。但就是这两秒里,我想起上个月测语音导航:读到“您已到达目的地”后,它卡在“目”字,喉音拖长,像被人掐住脖子,而屏幕焦点早跳进下一个按钮,盲人用户根本没机会点。我们改了三十七次tab顺序,可键盘焦点一进弹窗就迷路——因为开发顺手写了display:none,不是visibility:hidden,更不是aria-hidden="true",就是display:none。我敢打包票,这行代码诞生于凌晨一点零四分,提交日志写着“fix ui jitter”,连空格都没补。 隔壁桌咖啡洒了。不是泼,是杯沿一颤,深褐色液体漫过杯垫,沿着木纹往我这边爬。小编正低头回微信,手机响了一声,很短的“叮”,像指甲刮黑板。她没抬头,手指还在打字。我盯着那滩水看,忽然想到上上周测试那个表单:label和input用id关联,但id值全是“txt1”“btn2”,测试组提过七次,最后一次提的时候我截图发群里,底下没人接话。后来上线,视障用户反馈“每点一个框都说‘输入框’,不知道填啥”。我说“加aria-label”,开发反问:“加了真有人读?”——我答不上来。这个我说不准。但我知道,他写那行display:none时,压根没开过NVDA。
文章配图,仅供参考 总编翻了个白眼。不是对着我,是对着自己刚写的“技术尊重”四个字,他拿红笔圈出来,又划掉,墨水洇成一团紫。我看着那团紫,想起去年冬天陪一个视障朋友装APP——他让我念安装页文案,我念“欢迎使用智能生活助手”,他问:“助手帮谁?”我没接住。他笑了一下,说:“你猜我按了几次返回键才退出安装流程?”我没数。但那天我回来重跑了所有首次安装流,发现我们的splash页有个动画帧率低于24fps,而iOS辅助功能里“减少动态效果”一开,整个启动页直接白屏三秒——没人测过关开关的效果。我们只测了开着测。这个我敢打包票。 所以优胜劣汰。不是道德淘汰,是真淘汰。去年十月那个读屏兼容的版本,埋了十三个accessibilityEvent监听,结果厂商定制ROM把EVENT_TYPE_VIEW_FOCUSED干掉了两个,我们没覆盖,上线三天,某省政务APP服务号后台报警率冲到37%,不是崩溃率,是“无法触发关键操作”的埋点激增。运维连夜查日志,发现所有报错用户设备都带“MiUI 14.0.28”,而我们CI环境用的是Pixel模拟器。我第二天调出历史PR记录,最早的无障碍commit是三年前,作者已离职,提交信息写着“支持TalkBack(初版)”,括号里那句“初版”被后来人删了两次,第三次补上时错打成“初板”。这种细节,不拉出来晾,永远在暗处霉变。 外卖凉了没人吃。塑料盒盖子微微翘边,里面米饭结了一层薄膜,青菜叶蜷着,像冻僵的蛾子翅膀。我掀开盖子第三分钟,热气才冒出来一点,细得看不见。主编路过时瞄了一眼,说:“下次别订这家。”我没应声。心里想的是另一回事:我们上月强制要求所有图标加aria-label,结果运营塞进首页的轮播图banner,配图里放了个二维码,下面小字写“扫码享优惠”,可二维码本身没alt,也没任何text alternative——它就在div里孤零零躺着,既没role,也没focusable。测出来那天我截图发群里,五分钟后作者回:“这不是装饰图吗?”我回:“是装饰图,但用户靠语音命令‘点击二维码’时,系统认得出这是装饰图吗?”群里静了十七分钟。第十八分钟,总编发了个表情包:一只猫用爪子按着键盘,键盘上写着“我不听我不听”。 KPI今年砍了30%的bug率目标,倒把“无障碍缺陷发现数”单列成考核项。人事说这是重视。我笑了。去年十一月我提交的无障碍专项报告,三百七十二稿,最后定稿第369稿,被删掉的所有案例里,有一个真实发生:某银行APP的活体检测页,摄像头权限请求弹窗没读出“需开启摄像头用于人脸识别”,只读“权限请求”,用户反复拒绝后进入死循环——因为拒绝后的兜底逻辑写死了重试三次即退出,而不是跳转人工通道。这个case我们测出来、报上去、开发认领、改了、又回归测了。但它还是上了。上线后投诉电话录音里,一个七十岁老人声音发颤:“我点了八次‘继续’,它说‘请保持静止’,可我没动啊……我手抖,它说我动。”——这话我没写进报告。写了也留不住。我们留不住的从来不是bug,是那个手抖的人。 下次选题会我打算闭嘴。笔我带去,但不拿出来。如果总编又拿红笔画圈,我就盯着那团紫看,看它怎么一点点干掉水分,变成粉笔灰一样的碎屑。反正这篇可能活不过三小时。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


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