我正在研究键盘管理并坚持这个问题,我需要在 Tab 之前找到具有焦点的元素。例如,假设我在 html 中有一个列表,它看起来像
1. Folder button
2. Account button
3. Setting Button
4. More Button
5. SignOut Button
Run Code Online (Sandbox Code Playgroud)
假设现在具有焦点的元素是帐户按钮。后来我按 Tab 键,焦点移到设置。现在,当我这样做时,document.activeElement
我将获得“设置”按钮,但如何获得具有焦点的前一个元素(在本例中为“帐户”按钮)。我所做的当前 hack 是存储具有焦点的元素,并在以后需要时使用它。这种方式的问题是,即使我手动将其焦点移至tabIndex =-1
. 请要求任何澄清。提前致谢
这就是我现在通过存储旧值所做的事情,但我想要一种更好的方法。可能是动态的(即当焦点改变时)而不存储它
if(on arrow key events){
oldElementFocus = document.activeElement; //store previous element
do stuff...
}
if(event.keyCode && event.keyCode == 9){
// on tab I want to edit the attributes of the previous element
oldFocusedElement.tabIndex = -1;
}
Run Code Online (Sandbox Code Playgroud)