如何检测来自浏览器工具栏的焦点进入方向?
如何检测来自浏览器工具栏的焦点进入方向?
先说说我目前找到的一个临时 workaround 吧——在页面第一个可聚焦元素的前面,以及最后一个可聚焦元素的后面,各加一个空的 <div>,之后把焦点重定向到正确的元素上。不过这方法感觉有点 hack,我也在找更优雅的方案。
接下来聊聊我的核心需求和遇到的困境:
- 我需要判断:当用户在浏览器工具栏里用 Tab 导航后,焦点回到页面时,这个焦点恢复的动作是否源于工具栏的导航操作。
- 有没有原生的 API 或者方案能直接实现这个检测?
- 我试过用
keydown监听器来检测 Tab 或 Shift 按键,但这个方法只有在焦点没离开页面document范围时才管用。 - 一旦当前聚焦的是页面第一个或最后一个可聚焦元素,按 Tab 会让焦点跳到浏览器工具栏,这时候
keydown监听器就失效了,根本没法判断焦点的移动方向。 - 另外,出于无障碍访问的要求,我不能修改默认的焦点导航行为——也就是必须保留“焦点可以跳转到浏览器工具栏”这个特性。
备注:内容来源于stack exchange,提问作者btzr
相关产品推荐
相关产品推荐

