【发布时间】:2019-06-11 18:57:06
【问题描述】:
我有一个<input type="text" />。
当我从文本字段中 Shift+Tab 时,我想专注于 li > a。在这种情况下,我不能依赖原生选项卡行为,因为我在 <input /> 和目标 <a /> 之间有一个锚元素,我不想关注它。
因此,我添加了一个 keydown 侦听器,将焦点强制集中到我关心的 <a />。
然而,在 Chrome 中,当我关注 <input /> 和 <input /> 中的 Shift+Tab 时,焦点转到最后一个 <a />,但轮廓不可见。如果我再次执行 Shift+Tab + Tab 以回到 B,我现在可以看到轮廓。
document.getElementById("f").addEventListener("keydown", (e) => {
if (e.key === "Tab" && e.shiftKey) {
e.preventDefault();
document.querySelector("#list1 > li:last-child > a").focus();
}
});
<ul id="list1">
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
</ul>
<a href="#" />
<input id="f" />
如果我删除 keydown 处理程序和文本字段和我想要聚焦的目标锚点之间的锚元素,焦点轮廓将正确呈现。
这是一个已知的 Chrome 错误,是否有任何解决方法? (使用 Chrome 74)
【问题讨论】:
标签: javascript google-chrome focus outline