点加载更多后按钮变成转圈,接口慢的时候要等八秒,读屏用户听不到任何变化,以为按钮没点上,连着按了三次,请求发了三遍。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,加载状态只换了图标和禁用样式,没有可播报的文本,也没有 live 区域。按钮被禁用后读屏直接跳过,用户既不知道在加载,也不知道加载完了。
「加载状态播报」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
<button id='more' aria-disabled='false'>加载更多</button> <p role='status' aria-live='polite'></p> <script>status.textContent = '正在加载'</script>
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
具体做法是,在按钮旁边放一块 role 为 status 的区域,加载时写入正在加载;加载完成后改成已加载十条,让读屏自己念出来;按钮禁用期间保留可聚焦状态,用 aria-disabled 代替 disabled。
最后用这个标准收尾,点一次加载更多,读屏先念正在加载,数据回来后再念已加载十条,按钮不会被连点。
