触发器专注于给定位置的元素

时间:2011-09-07 17:36:30

标签: javascript html events dom

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

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

问题转化为有没有办法选择匹配给定位置的元素?

有点像getElementByPosition吗?

2 个答案:

答案 0 :(得分:4)

最简单的选择是使用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

答案 1 :(得分:1)