协慌网

登录 贡献 社区

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

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

我之所以在寻找这个:

我试图使像箭头键和enter通过输入元素表中导航。选项卡现在可以使用,但是输入,并且默认情况下不显示箭头。我已经设置了密钥处理部分,但现在我需要弄清楚如何在事件处理函数中移动焦点。

答案

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

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

相关链接:

正如 JW 所说,至少在与浏览器无关的方式中,你无法找到当前的焦点元素。但如果您的应用程序仅限 IE(有些是......),您可以通过以下方式找到它:

document.activeElement

编辑:看起来 IE 毕竟没有出错,这是 HTML5 草案的一部分,似乎至少得到了最新版本的 Chrome,Safari 和 Firefox 的支持。

如果您可以使用 jQuery,它现在支持:focus,只需确保您使用的是 1.6 + 版本。

此语句将为您提供当前关注的元素。

$(":focus")

From: 如何使用 jQuery 选择一个关注它的元素