【问题标题】:Trigger focus on an element at a given position触发焦点在给定位置的元素
【发布时间】:2011-11-12 09:04:57
【问题描述】:

我带着一个有趣的问题来找你。

给定 HTML 文档中的位置 (x,y),如何在给定位置的元素上触发焦点事件。

问题转化为是否有任何方法可以选择与给定位置匹配的元素?

有点像 getElementByPosition?

【问题讨论】:

    标签: javascript html events dom


    【解决方案1】:

    最简单的选择是使用elementFromPoint

    var element = document.elementFromPoint(x, y);
    element.focus();
    

    除此之外,您可以编写自己的函数。这是我首先想到的——我在一段时间前使用它,当时elementFromPoint 有一些原因无法正常工作,我不记得到底是什么。可能有更好的方法来做到这一点,但我只是尝试了我首先想到的:

    var coords = [100, 100],
        elems = document.getElementsByTagName("*");
    for(var i = 0; i < elems.length; i++) {
        var left = elems[i].offsetLeft,
            top = elems[i].offsetTop,
            width = elems[i].offsetWidth;
            height = elems[i].offsetHeight;
        if((left <= coords[0]) && (left + width >= coords[0]) && (top <=coords[1]) && (top + height >= coords[1])) {
            elems[i].focus();
        }
    }
    

    你可以看到它在here工作。

    【讨论】:

    • 旧浏览器不是问题
    • 是的,我知道,我在你评论之前删除了那句话!
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      相关资源
      最近更新 更多