grep -rn 'tabindex="[1-9]' themes/
# 只保留 0 和 -1 两种取值

为了让搜索框早点被 Tab 到,给它写了 tabindex=3,结果整页 Tab 先跳搜索框,再跳页脚,最后才回到顶部导航,顺序全乱。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,正数 tabindex 会把元素提到全局焦点队列的前面,所有正数按大小排在零之前。页面上只要出现一个正数,其余元素的相对顺序就跟着被改写。

「正 tabindex 顺序」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

处理上按这个顺序:把页面上所有正数 tabindex 搜出来,统一改成零或者直接删掉;需要提前到达的位置靠调整 DOM 顺序解决,别用数字插队;改完用 Tab 走全页,记录落点顺序,和视觉阅读顺序核对一遍。

改完只确认一件事:全页只剩零和负一两种 tabindex,Tab 落点从页头到页脚单调向下不再回跳。

作者 9823189