价格区间用 div 做的滑块,鼠标拖动一切正常,键盘用户按左右键页面只是往下滚,怎么都取不到想要的数值。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,滑块用 div 加鼠标事件拼出来,没有 role 也没有键盘处理,当前值没暴露出去,读屏同样读不出这个区间范围,键盘用户直接用不了。
「滑块键盘操作」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。报错里带路径的,先去看那个路径在不在、权限对不对。
<div role='slider' tabindex='0' aria-valuemin='0'
aria-valuemax='1000' aria-valuenow='300'
aria-label='价格上限'>
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
具体做法是,加上 role=slider,再把最小值、最大值和当前值三个属性补上;在 keydown 里监听左右键和 Home End,让数值按步长一格一格变化;数值每次变化后同步更新 aria-valuenow,让读屏也能念出当前值。
最后用这个标准收尾,键盘焦点进入后左右键能连续调数值,读屏也能念出当前值。
