как проверить фокус на элементах и ​​окнах? - PullRequest
1 голос
/ 12 ноября 2009

Я хочу найти, какой элемент находится в фокусе. Кроме того, когда пользователь открывает несколько окон / вкладок, я хотел бы знать, какое окно / вкладка находится в фокусе.

Ответы [ 3 ]

2 голосов
/ 12 ноября 2009

В простом JavaScript (т.е. без каких-либо каркасов, таких как jQuery, MooTools и т. Д.):

var focusedElement;

document.addEventListener("focus", function(e) {
    focusedElement = e.target;
}, true);

document.addEventListener("blur", function(e) {
    focusedElement = null;
}, true);

Обычно, когда элемент получает фокус, мы сохраняем этот элемент в переменной, а когда элемент теряет фокус, мы сбрасываем переменную.

В HTML 5 есть определенный атрибут для доступа к текущему элементу:

var focusedElement = document.activeElement;
1 голос
/ 12 ноября 2009

Используя jQuery, вы можете использовать это, чтобы найти фокус:

$("body").bind("onfocus", function (e) {
  alert("focus: " + e.target); // e.target is the element with focus
});

Вам нужен только один обработчик, использующий делегирование события - событие просачивается вверх по дереву DOM, пока оно не будет обработано, поэтому вы можете обойтись одним обработчиком для всего документа.

См. Документацию jQuery для их объекта события и функции события , это значительно упрощает кросс-браузерную работу.

Несколько окон или вкладок браузера недоступны из Javascript.

0 голосов
/ 12 ноября 2009

Вот совет . В любом случае, вы должны добавить обработчик событий для каждого элемента ввода на странице. Единственная альтернатива только для IE: document.activeElement

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