Keydown на div?

Возникла необходимость назначить обработчики и нормально реагировать на фокусные события на нефокусируемых элементах (типа keydown на div).

Естественно, по обычному клику никакой фокус никуда не падает.

Я уже даже начал писать свой EventManager (с преферансом и сеньоритами) c альтернативным механизмом фокуса, который будет биндить свой обработчик на body и оттуда уже запускать нужные события. Но в процессе реализации стали возникать некоторые проблемы, в производительности решений которых я не уверен, боюсь сильных тормозов (правда, ещё не проверял).

В глобальном плане такую штуку мне пока надо использовать только в одном виджете (коих может быть несколько на странице), но неизвестно, что будет дальше.

Собственно, в конечном итоге вопроса два.
1. Существуют ли штатные способы заставить браузер устанавливать фокус нужным элементам и дёргать на них такие события? Требуется кроссбраузерность хотя бы на уровне IE9+ (но лучше 8+).
И, в случае положительного ответа
2. Стоит ли пользоваться этими способами, или целесообразнее закончить и воспользоваться своим EventManager?
  • Вопрос задан
  • 5298 просмотров
Решения вопроса 1
@moonsly
stackoverflow.com/questions/1717897/jquery-keydown-on-div-not-working-in-firefox
тут предлагают добавить tabindex=«0» для получения фокуса.
Насчет кросс-браузерности — не проверял.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
blo
@blo
инженер-программист
Когда-то сталкивался с такой-же проблемой. Самым простым решением оказалось использовать тег A c display:block вместо DIV.
Ответ написан
Комментировать
@rozhik
По духу вопроса понял, что Вам нужно взглянуть на google closure library. В ней красиво решены оба вопроса + есть еще сотни плюсов. Она как и ExtJS делает классовую прослойку перед DOM, что позволяет легко решать подобные и более сложные проблемы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы