如何确定哪个html页面元素具有焦点?

时间:2009-01-27 15:03:30

标签: javascript html

  

可能重复:
  How do I find out which DOM element has the focus?

javascript中有没有办法确定哪个html页面元素有焦点?

5 个答案:

答案 0 :(得分:83)

使用document.activeElement属性。

Chrome 2 +,Firefox 3 +,IE4 +,Opera 9.6+和Safari 4 +支持document.activeElement属性。

请注意,此属性仅包含接受击键的元素(例如表单元素)。

答案 1 :(得分:47)

结帐this blog post。它提供了一种解决方法,以便document.activeElement适用于所有浏览器。

function _dom_trackActiveElement(evt) {
    if (evt && evt.target) { 
        document.activeElement = evt.target == document ? null : evt.target;
    }
}

function _dom_trackActiveElementLost(evt) { 
    document.activeElement = null;
}

if (!document.activeElement) {
    document.addEventListener("focus",_dom_trackActiveElement,true);
    document.addEventListener("blur",_dom_trackActiveElementLost,true);
}

需要注意的事项:

  

这种实施有点过于悲观;如果浏览器窗口失去焦点,则activeElement设置为null(因为输入控件也会失去焦点)。如果您的应用程序需要activeElement值,即使浏览器窗口没有焦点,您也可以删除模糊事件监听器。

答案 2 :(得分:6)

仅供记录,有点晚,当然还有not supported in old browsers

var element = document.querySelector(":focus");

应该适用于所有元素(例如锚点)。

答案 3 :(得分:3)

也许document.activeElement,不了解浏览器支持。似乎在Firefox和IE7中工作,但我想你必须在Opera中尝试它等等。

答案 4 :(得分:0)

检查bottom post。我认为那会有用......