Активировать фокус на элементе в данной позиции - PullRequest
4 голосов
/ 07 сентября 2011

Я прихожу к вам с интересным вопросом.

При заданной позиции (x, y) в документе HTML, как вы можете вызвать событие фокуса для элемента в этой заданной позиции.

Проблема заключается в том, есть ли способ выбрать элемент, соответствующий данной позиции?

Вроде как getElementByPosition?

Ответы [ 2 ]

4 голосов
/ 07 сентября 2011

Самый простой вариант - использовать 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();
    }
}

Вы можете видеть, что это работает здесь .

1 голос
/ 07 сентября 2011

вы можете использовать elementFromPoint(x, y)

https://developer.mozilla.org/en/DOM/document.elementFromPoint

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...