文章右上角的收藏按钮点一下变成实心星,再点回到空心,视觉上能看出状态,读屏两次都只念收藏,用户不知道到底收藏成功没有。日志里能对上时间点,这种反而好排。

按钮的状态只体现在图标样式上,没有 aria-pressed 这类状态属性。读屏把它当成普通按钮,点击前后播报的内容完全一样。这一点先确认清楚,后面就不用反复试。

<button id='fav' aria-pressed='false'>收藏</button>
<script>fav.setAttribute('aria-pressed', on)</script>

围绕「切换按钮状态」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

改完顺手把文档补一句,省得下次自己重新推一遍。

处理上按这个顺序:给按钮加 aria-pressed,未收藏写 false,收藏后改成 true;按钮文字保持不变,状态交给属性表达,别把文案在收藏和取消之间来回换;接口失败时把状态改回去,并播报一句收藏失败。

结果对不对很好判断,读屏聚焦按钮时听到未按下,点一次后再聚焦听到已按下,图标与朗读一致。

作者 9823189