Самый простой вариант - использовать 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();
}
}
Вы можете видеть, что это работает здесь .