如何找出哪个 DOM 元素具有焦点?

新手上路,请多包涵

我想在 JavaScript 中找出当前焦点所在的元素。我一直在浏览 DOM,但还没有找到我需要的东西。有没有办法做到这一点,以及如何做到这一点?

我一直在寻找这个的原因:

我正在尝试制作像箭头一样的键并通过输入元素表 enter 导航。选项卡现在可以工作,但输入和箭头默认情况下似乎没有。我已经设置了关键处理部分,但现在我需要弄清楚如何将焦点移到事件处理函数中。

原文由 Tony Peterson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

使用 document.activeElement ,所有主流浏览器都支持它。

以前,如果您试图找出哪个表单域具有焦点,则不能。要在旧浏览器中模拟检测,请将“焦点”事件处理程序添加到所有字段并将最后一个焦点字段记录在变量中。添加一个“模糊”处理程序以在最后一个焦点字段的模糊事件中清除变量。

如果您需要删除 activeElement ,您可以使用 blur; document.activeElement.blur() 。它将 activeElement 更改为 body

相关链接:

原文由 JW. 发布,翻译遵循 CC BY-SA 4.0 许可协议

正如 JW 所说,您找不到当前获得焦点的元素,至少以一种与浏览器无关的方式。但是如果你的应用只有 IE(有些是……),你可以通过以下方式找到它:

 document.activeElement

看起来 IE 并没有什么问题,这是 HTML5 草案的一部分,似乎至少得到了最新版本的 Chrome、Safari 和 Firefox 的支持。

原文由 Wookai 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题