在这个话题上有大约other个帖子没有回答我的问题.
在单击按钮时,我需要滚动到表单的某个部分.此外,在页面顶部有一个Skip-Nav链接,skipnav
,在本例中也应该接收第一个TAB焦点,仅用于键盘导航.它不应该是自动对焦的,但如果键盘用户按了TAB,跳转应该从skipnav
元素开始.
以下代码不起作用:
// Focus/blur "skipnav" to prepare initial TAB-ing for keyboard users, AND scroll to section for mouse users
document.getElementById('skipnav')?.focus();
document.getElementById('skipnav')?.blur();
var stepIndicatorElement = document.getElementsByClassName("usa-step-indicator")[0];
if (stepIndicatorElement) {
stepIndicatorElement.scrollIntoView();
}
问题是:
- 第一个
focus()/blur()
对本身没有其他代码,当您第一次按TAB键时,它将聚焦next元素afterskipNav
; -
scrollIntoView()
虽然不会立即聚焦任何内容,但会对Tab键顺序执行一些操作,这样按Tab键就会聚焦该部分中的第一个元素.即使我有上面的focus()/blur()
,按Tab键也会聚焦in that section.scrollIntoView
是否会以某种方式重置或准备新的Tab键顺序,即使没有聚焦?