加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0577zz.com/)- 低代码、办公协同、物联平台、操作系统、5G!
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

无障碍建站:重构人与信息的技术关系

发布时间:2026-11-06 14:07:05 所属栏目:策划 来源:DaWei
导读:文章配图,仅供参考  接口超时告警那一刻,我正蹲在茶水间扒拉微波炉里那盒冷透的咖喱鸡——叮一声响,手机震得我手一抖,饭盒盖弹开,米粒飞到咖啡机滤网槽上。监控大盘上那条绿色的线一直在抖,不是飘,是抽筋似的颤,跟上周王磊

文章配图,仅供参考

  接口超时告警那一刻,我正蹲在茶水间扒拉微波炉里那盒冷透的咖喱鸡——叮一声响,手机震得我手一抖,饭盒盖弹开,米粒飞到咖啡机滤网槽上。监控大盘上那条绿色的线一直在抖,不是飘,是抽筋似的颤,跟上周王磊改完表结构后没删的那行临时注释一样,留着就留着,但谁看了都心慌。


  你猜怎么着?告警压根不是后端扛不住,是前端那个无障碍焦点管理脚本,调了个带重试的fetch,在键盘Tab跳转时连续触发三次失败请求,每回都卡在3.2秒——正好卡死在我们默认超时阈值底下0.3秒。我原以为又是CDN缓存没刷干净,结果抓包一看,header里明晃晃写着accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8……人家屏幕阅读器发的请求,我们连content-type都没认全,直接甩给下游做JSON解析,然后崩。崩得还挺体面:HTTP 406,Not Acceptable。呵,挺合适。


  谁在工位上打电话谈房租?李薇,就坐你斜后方那个,声音大得我听清了“押一付三涨了八百”。她挂了电话转身问我:“老张,咱们那套语音导航按钮的aria-label,到底填‘跳转至首页’还是‘进入首页’?”我答:“填啥都行,只要别写‘点这儿’。”她点头去改,十分钟后提PR,字段名写成了accessibility_label_en——后端字段,却塞进前端i18n的yaml里。没人拦,没人问,因为去年重构那版API响应体里,description字段已经同时存过HTML片段、纯文本、base64音频摘要……记不清是哪次了,反正DB里这个字段现在是TEXT类型,长度设的是65535。


  优胜劣汰。我说这话的时候,其实自己也愣了一下。不是因为虚,是因为它真正在发生,而且快得不像话。上周三灰度放量,视力障碍用户UV涨了17%,而同步下降的是——页面平均停留时长,掉了11%。不是他们不想看,是我们加载了五层包裹的SVG图标+CSS动画+JS懒加载,等aria-live区域终于吐出“加载完成”四个字,人早切到下个app了。可反过来看,盲文点显器用户点击转化率比普通用户高2.3倍。为什么?因为他们必须逐字确认。每一个跳转、每一个按钮、每一个状态变更,我们都逼着自己写了role、label、state、live region。结果呢?轮播图自动播放被禁、表单提交按钮多了disabled属性和loading态描述、错误提示不再只靠颜色区分。这不是让残障用户“用得上”,是把所有人拖进一个必须讲清楚、不能糊弄、拒绝歧义的交互现实里。


  机箱嗡嗡响。不是散热风扇,是放在柜子底下的那台旧测试服务器,三年前换下来的,一直没拆,就搁那儿震。我路过时踢了一脚,声音小了半秒,又回来了。就像有些东西,你觉得它不重要,但它就在那儿耗着,等着你哪天非得动它。


  你记得刘工不?就是总穿那件领口起球的藏青卫衣、上个月刚提离职的那个。他走之前拉着我看了三分钟他写的自动化对比脚本——不是比UI像素,是比DOM树深度、比tabindex序列连续性、比所有元素是否都含aria-pressed或type="submit"。跑出来27个失败项,19个标着“忽略:祖传iframe嵌套,无法注入ARIA”。那行代码他写了七年,2019年上线的,当时产品经理说“先让视力正常的同学能用就行”。现在他删掉这行,连带注释里的“#TODO:等UX统一规范”,一起删了。不是气,是烦。烦这种“先”字开头的承诺,最后都变成别人不敢动的那块。


  外卖筷子掉在地上,我弯腰捡,发现地板缝里卡着半片橘子皮,估计是前天运维老陈宵夜留的。他昨天还骂着“哪个傻X把定时任务日志级别调成DEBUG”,结果查了半天,发现是accessibility_audit_job这个任务,自己往日志里狂打DOM遍历路径,光一行path就327个字符,日志刷得太快看不清,滚屏速度赶上前端同事改需求的速度。


  所以我说优胜劣汰站得住。不是嘴硬,是数据在咬人。上次全站无障碍合规自测,我们按WCAG 2.1 AA标准筛出132个待修复项,优先级最高的38个,修完后,Chrome插件Lighthouse的SEO评分反而掉了0.7分——因为alt文本加太满,搜索引擎判定为关键词堆砌。但我们没撤。因为另一个没修的点是搜索框没有aria-describedby指向筛选条件说明,这个没修,屏幕阅读器用户搜索失败率高出44%。选哪个?不是技术问题,是排序逻辑。而排序这件事,从来没写进过任何PR模板,也没出现在任何排期会上——直到上个月产品突然问:“为什么视障用户的搜索留存比健全用户低那么多?”没人答得上来,最后是前端小赵翻出半年前埋的埋点,才把数据串起来。


  工位隔断上贴的便签卷了边,写的是“灰度期间禁用a11y检测脚本v3.2”。那是我贴的。因为v3.2会在每次focus事件里重算整个页面的landmark结构,导致安卓TalkBack卡顿。我把它关了,换了个轻量版。但你知道最绝的是什么吗?那个轻量版脚本,是刘工走前三天晚上推的。commit message就一行:“别问,用了再说”。


  我现在每天早上第一件事,是打开devtools,切到Elements面板,Ctrl+F搜“role=”,扫三页。不是检查有没有,是看它写得像不像人话。上周扫到一个,我当场截图发群里,配字:“这是按钮,还是链接?还是薛定谔的交互单元?”群里静了三分钟,王磊回:“…我改”。他没解释,也没辩。就一个字。


  下周一,我打算把那个藏在测试框架底层的、专门校验aria-合法性的钩子,改成强制fail而不是warn。不跟任何人商量。先做了再说。要是崩了,大不了回滚——反正回滚脚本里,也早该加上accessibility_state_recover这一步了。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!