【问题标题】:How to find x and y coordinates of a button while using keyboard navigation?如何在使用键盘导航时找到按钮的 x 和 y 坐标?
【发布时间】:2021-12-08 03:29:16
【问题描述】:

我正在显示一个在单击图标时呈现的下拉菜单。右键单击另一个 div 也会呈现相同的下拉列表。它需要鼠标单击事件的 x 和 y 坐标才能在正确的位置呈现下拉菜单。这是图标的代码:

<Icon onClick={this.handleOnClick} onKeyDown={this.handleOnClick}/>

当我进行键盘导航并在图标上按 Enter 时,会调用下拉菜单的渲染函数,但由于事件没有 X 和 Y 坐标,因此下拉菜单会在页面左上角 ( 0, 0)。

当我进行键盘导航时,有什么方法可以获取按钮的位置吗?

【问题讨论】:

    标签: javascript accessibility uiaccessibility web-accessibility keyboard-navigation


    【解决方案1】:

    我得到了这个工作使用:

    document.activeElement.getBoundingClientRect();

    在 Key 事件中,我调用了这个方法。这个方法给出了一个包含 x 和 y 坐标以及高度、宽度和其他此类属性的对象

    【讨论】:

    • getBoundingClientRect 返回相对于视口的坐标,但我认为您需要相对于容器元素或整个页面的坐标,我建议检查 pageX/Y、screenX/Y、clientX/Y、offsetX/Y 之间的差异