在实现可滚动的单选择列表框(Listbox)时,如果使用 `aria-activedescendant` 属性来管理焦点,并且当通过键盘或指针操作改变了该属性引用的选项,而该选项当前未完全显示在可视区域内,那么 JavaScript 必须负责自动滚动列表框容器,以确保被选中的选项始终位于用户可见的区域内。

根据 ARIA 作者实践指南(APG)中关于可滚动列表框的示例说明,由于该列表框是可滚动的,并且其焦点管理依赖于 `aria-activedescendant`,因此 JavaScript 的关键职责之一就是处理滚动逻辑。具体来说,当键盘或指针事件改变了 `aria-activedescendant` 所引用的选项时,如果该选项没有完全显示,JavaScript 必须执行滚动操作,将该选项定位到视图中。

此外,为了增强用户体验,该示例还提到使用 CSS 的 `:hover` 和 `:focus` 伪类来样式化键盘焦点和悬停状态,并改变光标样式,以帮助有视觉障碍的用户识别出列表框的可交互性。在键盘支持方面,当视觉焦点停留在列表框的某个选项上时,DOM 的焦点(focus)实际上仍然保留在列表框元素本身,而 `aria-activedescendant` 的值则指向视觉上被指示为焦点的子选项。

信息来源