从卧室到客厅:拆解 NVDA 对象导航的树形逻辑
看了群里讨论的对象导航,萌生了瞎写一点的思路,希望我抛出的砖能引出入门朋友的玉,废话不多说了,直接说我对对象导航的思路。 按键与生活动作的对应
- NVDA+小键盘4:在你当前所处的“空间/容器”内向左浏览同级对象,只能查看同一空间内并排的物品,始终跨不出当前空间的范围
- NVDA+小键盘6:在当前所处的空间内向右浏览同级对象,依次切换同层级的物件,与NVDA+小键盘4配对使用,操作范围都局限在当前容器内
- NVDA+小键盘8:从当前所在的空间中退出,回到上一级更大的父级空间;只有退出当前层级,才能切换到其他并列的对象
- NVDA+小键盘2:进入当前选中的对象/空间内部,深入到下一层级;只有进入内部后,才能浏览该对象包含的细节内容
完整场景举例说明:从卧室出发,到沙发上找电视遥控器
初始状态:你正站在卧室中央 你刚下床,整个人处于「卧室」这个空间内部。 这时候你按NVDA+小键盘4、NVDA+小键盘6,只能依次切换床头柜、衣柜、台灯、床边枕头这些卧室内的物品,完全触碰不到客厅相关的对象。这正对应了核心逻辑:4和6只能操作当前对象,无法触及其他对象。 第一步:按NVDA+小键盘8,退出卧室来到公共过道 按一次NVDA+小键盘8,相当于你后退一步走出卧室门,站到了家里的公共过道上。 过道这一层级,并列着卧室门、客厅门、厨房门、卫生间门。只有退到这个父层级,你才有机会选中并进入客厅。 第二步:按NVDA+小键盘6,定位到客厅门 站在过道层级,你按NVDA+小键盘6向右切换同级对象,依次经过厨房门、卫生间门,最终停在客厅门前。 此时你只是选中了「客厅」这个对象,还没有进入它的内部,因此还看不到沙发、茶几这些客厅里的家具。 第三步:按NVDA+小键盘2,走进客厅内部 按一次NVDA+小键盘2,相当于走进了客厅。此时你的当前操作对象就变成了「客厅」本身。 这时再按NVDA+小键盘4、NVDA+小键盘6,就能依次浏览落地灯、三人沙发、玻璃茶几、电视柜等客厅内的所有家具。 第四步:找到沙发,按NVDA+小键盘2进入并翻找物品 按NVDA+小键盘6切换到「沙发」对象,再按一次NVDA+小键盘2,相当于你坐到了沙发上,进入了沙发的内部范围。 此时你的当前操作范围就是这张沙发,再按NVDA+小键盘4、NVDA+小键盘6,就能依次摸到左侧靠垫、中间的遥控器、右侧抱枕,浏览沙发上的所有小物件。 反向验证:切换对象必须先退出当前层级 比如你拿到遥控器后,想去茶几上拿水杯。此时坐在沙发上直接按NVDA+小键盘4、NVDA+小键盘6,是绝对触碰不到茶几的——必须先按一次NVDA+小键盘8,从沙发的范围里退出来,回到客厅层级;回到客厅这一层后,再用NVDA+小键盘6切换到茶几对象,按NVDA+小键盘2进入茶几内部,才能拿到上面的水杯。
总结
NVDA对象导航的本质,就是一层嵌套一层的树形层级结构:界面元素就像房子套房间、房间套家具、家具套小物件的嵌套空间。 NVDA+小键盘4和NVDA+小键盘6的操作范围,永远局限在你当前所处的这一层“空间”里,无法跨层级访问其他对象;想要操作别的对象,必须先用NVDA+小键盘8退回到上一级公共层级,再用NVDA+小键盘4/6选中目标对象,最后用NVDA+小键盘2进入其内部。这就是对象导航“先退后进、逐层切换”的核心逻辑。