ASP无障碍设计:视障开发者也能高效调试代码
|
前端又在群里甩文档了,说是「ASP无障碍设计规范」,我原以为又是那种「字号要大于14px」的废话——结果翻到调试工具适配那块,差点把数位笔的笔尖戳进屏幕。去年端午那会儿,我们组接了个视障开发者工具链的项目,改到第九版的时候,测试组的老王戴着盲杖就冲进来了,说「你们这调试面板的快捷键冲突得跟区块链分叉似的,我按Ctrl+Shift+D,结果弹出来的是色盲模式切换」。 当时我们用的还是老版的ASP调试器,组件层级嵌套得比智能合约还复杂。视障开发者要靠屏幕阅读器逐行读代码,可我们的状态提示全藏在图标里——比如那个「运行中」的绿色小箭头,屏幕阅读器根本识别不了,老王说「我听见的是『空白图标』,鬼知道现在是运行还是卡死」。更绝的是错误提示,本来该用ARIA标签标清楚的,结果前端图省事,直接用了div+class,屏幕阅读器读出来就是「div div div 错误 div div div」,跟听加密货币白皮书似的。 我原以为改个快捷键、加个ARIA标签就完事了,结果产品经理说「要符合WCAG 2.1 AA级标准」。那天下午,测试组把会议室投影仪占了,老王戴着盲杖在键盘上敲得啪啪响,说「你们这个『折叠代码块』的功能,屏幕阅读器读出来是『按钮 展开/折叠』,但实际按下去没反应——因为你们把事件绑定在了父元素上,而屏幕阅读器只认子元素」。前端小妹在旁边刷短视频外放,听到这儿突然笑出声:「那视障开发者岂不是要靠听声音判断代码有没有折叠?」老王把盲杖往桌上一敲:「我们本来就要靠声音!但你们给的反馈是错的!」
文章配图,仅供参考 后来我们翻出ASP的源码,发现组件库里有个「无障碍基类」,结果根本没人用——前端嫌麻烦,说「反正测试组不查这个」。可视障开发者要的不是「有没有无障碍」,是「能不能用」。比如那个代码补全的下拉框,正常开发者用方向键选,视障开发者得靠屏幕阅读器的「虚拟光标」——但我们的下拉框没标「role=listbox」,屏幕阅读器读不出来选项列表,老王说「我按上下键,听见的是『空白空白空白』,跟挖矿没挖到块似的」。改到第三版的时候,前端和产品吵起来了。产品说「要加高对比度模式」,前端说「色板里那个『视障灰』太丑了,甲方肯定不通过」。我凑过去看色板,发现所谓的「视障灰」是#767676,跟显示器有点色偏时看到的颜色一模一样——怪不得前端嫌丑,这颜色在正常屏幕上看确实像没擦干净的马克杯。最后产品拍板:「丑就丑,总比用不了强。」结果改完测试,老王说「高对比度模式下,错误提示的红字变成黑底红字了,屏幕阅读器读的是『黑色背景上的红色文字』——可我们看不见颜色啊!」 窗台上的绿萝死了半盆那会儿,我们终于搞定了快捷键冲突。原来ASP的调试器默认用了Ctrl+Shift+D调取开发者工具,而视障开发者常用的屏幕阅读器也用了这个组合键——就像区块链里两个节点同时出块,分叉了。最后我们把调试器的快捷键改成Ctrl+Alt+D,老王试了说「这回能听见『调试面板已打开』了,比挖到以太坊的空投还开心」。 但最麻烦的还是「空态」设计。正常开发者看到空文件夹,知道要新建文件;视障开发者靠屏幕阅读器读「空文件夹」四个字,可我们的空态页面没加ARIA标签,屏幕阅读器读出来是「div 空态 div」,老王说「我听见的是『空白空白空白』,根本不知道该干啥」。后来我们在空态页面加了「role=alert」和「aria-live=polite」,屏幕阅读器会主动提示「当前文件夹为空,请新建文件」——老王说「这比交易所的空投提醒还及时」。 跑题说句,切图文件夹里的命名乱七八糟那会儿,我正跟前端对栅格间距。他们非说「12px的间距在移动端显大」,可设计稿上标的是8px——最后发现是显示器色偏,把灰色看成了黑色,间距自然显大。就像视障开发者分不清颜色,我们这些「明眼人」也会被色偏骗。所以后来我们改了规范:所有间距必须用代码算,不许靠眼睛看——毕竟屏幕阅读器不会色偏,可人的眼睛会。 现在回头看,ASP无障碍设计能站住,靠的不是「政治正确」,是「优胜劣汰」。视障开发者用不了你的工具,就会换别的——就像区块链里,不好用的公链会被淘汰。老王现在逢人就说「你们那个调试器,比我之前用的都顺手」,前端小妹虽然还是嫌色板丑,但改稿时会自动加ARIA标签了——毕竟被测试组骂了十几次,谁也不想再重写第九版。 当然,我们也没完全搞定。比如那个代码高亮的功能,视障开发者说「屏幕阅读器读的是『红色文字 蓝色背景』,可我们看不见颜色,能不能改成『重要代码』这种提示?」——这事儿到现在还没解决,因为产品说「涉及核心架构,改起来太麻烦」。所以有时候,无障碍设计不是技术问题,是优先级问题——就像区块链里,先搞性能还是先搞去中心化,总得选一个。 (编辑:草根网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


ASP脚本编写避坑指南:90%开发者忽略的语法细节
ASP脚本避坑指南:5个新手常犯语法雷区
无障碍设计失灵?动态跨界整合破局
ASP进阶实战:云时代系统工程师站长跃迁之路
无障碍编程:变量命名如何无声包容视障开发者
MySQL事务控制无障碍设计指南
ASP进阶实战:系统工程师高效开发指南



浙公网安备 33038102330473号