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

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

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

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

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

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

    使用 document.activeElement 财产。

    这个 document.activeElement 属性在Chrome 2+、Firefox 3+、IE4+、Opera 9.6+和Safari 4+上受支持。

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

        2
  •  47
  •   Paolo Bergantino    16 年前

    查看 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值,即使浏览器窗口没有焦点,你也可以删除模糊事件监听器。

        3
  •  6
  •   ernesto    14 年前

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

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

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

        4
  •  3
  •   andreas    16 年前

    大概 document.activeElement ,不知道浏览器支持tho。似乎可以在Firefox和IE7中运行,但我想你也必须在Opera等中尝试一下。

        5
  •  0
  •   Indeed is Trash    16 年前

    检查 bottom post 我认为这会奏效。。。