代码之家  ›  专栏  ›  技术社区  ›  Peanut

如何确定哪个HTML页面元素具有焦点?[复制品]

  •  64
  • Peanut  · 技术社区  · 16 年前

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

    在javascript中,有没有一种方法可以确定哪个HTML页面元素具有焦点?

    5 回复  |  直到 12 年前
        1
  •  82
  •   Aron Rotteveel    12 年前

    使用 document.activeElement 财产。

    这个 文档.活动 Chrome 2+、Firefox 3+、IE4+、Opera 9.6+和Safari 4+支持属性。

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

        2
  •  47
  •   Paolo Bergantino    15 年前

    退房 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设置为空(因为输入控件也失去焦点)。如果应用程序需要activeelement值,即使浏览器窗口没有焦点,也可以删除blur事件侦听器。

        3
  •  6
  •   ernesto    14 年前

    只是为了记录,有点晚了,当然 not supported in old browsers :

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

    应适用于所有构件(如锚)。

        4
  •  3
  •   andreas    16 年前

    也许吧 document.activeElement 不知道浏览器支持tho。似乎可以在火狐和IE7上使用,但我想你也必须在Opera上尝试一下。

        5
  •  0
  •   Indeed is Trash    16 年前

    检查 bottom post . 我想那会奏效的…