<div role='alert' aria-live='assertive'>
  手机号格式不对 请填 11 位数字
</div>
<!-- 不要用 setTimeout 移除错误提示 -->

提交失败后右上角弹出一条红色提示,三秒后自动淡出,读屏刚念到一半就断了,用户只听到提交失败四个字,不知道失败原因。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:提示容器用的是普通 div,没有 live 角色,读屏不会主动播报。加上三秒自动关闭,朗读队列还没走完节点就被移除了,剩下的内容直接消失。

这次卡住的地方就在「错误提示角色」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。同一份配置存在多处的,先确认改的是被加载的那一份。

处理上按这个顺序:错误提示改用 role 为 alert 的容器,插入时立刻打断当前朗读;去掉三秒自动关闭,或者延到用户手动关掉,错误信息不该自己消失;关键错误同时在表单顶部留一份静态文本,避免依赖浮层。

确认没问题再收工,提交一次错误表单,读屏完整念出错误原因,提示不会在朗读中途消失。

作者 9823189