Я лихорадочно лижусь в текущем состоянии захвата ключа для веб-приложений. Он отлично работает, пока вы знаете, что ваш пользователь будет печатать в определенном месте (например, поле input
), но как только вы хотите делать глобальные ярлыки для всего "приложения", он, кажется, разваливается,
Я пытаюсь выяснить, есть ли лучший способ захватить все ключевые события для веб-страницы, чем метод, который я использую в настоящее время.
Мой текущий метод - использовать плагин JQuery Hotkeys, привязанный к элементу document
, т.е.:
$(document).bind("keyup", "delete", function() {});
Это отлично работает для большинства целей, но, например, в Firefox, если пользователь случайно рассеивает курсор мыши над навигационной панелью, клавиша delete иногда приводит к тому, что пользователь "возвращается", а ключ никогда не принимается обработчиком, чтобы я мог остановить распространение.
Есть ли другой элемент, к которому я должен привязываться? Есть ли для этого лучший плагин? Должен ли я просто избегать использования каких-либо ключей, связанных с вещами в общих веб-браузерах?
Поскольку все больше и больше веб-приложений выглядят имитирующими своих настольных коллег, похоже, что это основная функция, которую все чаще потребуют веб-разработчики.
EDIT: Я должен указать, что я уже использую e.stopPropagation()
и e.preventDefault()
. Основная проблема заключается в том, что иногда событие никогда не передается связанной функции. Я в основном задаюсь вопросом, кто-нибудь вычислил "более высокий" элемент для привязки к другому, чем document
. Или есть альтернатива, о которой я даже не думал? Внедрение невидимого элемента Flash на странице, а затем передача всех ключей из этого в Javascript, например (я не думаю, что это сработает).
Думаю, на данный момент я делаю вещи "стандартными, хорошо известными способами". Я пытаюсь увидеть, есть ли внешний вид, который не широко известен, что, возможно, кто-то из SO знает о: -).