Надежная обработка сочетаний клавиш с использованием JavaScript - PullRequest
5 голосов
/ 04 марта 2009

Какой самый надежный способ создания глобального обработчика сочетаний клавиш для веб-приложения с использованием JavaScript, т. Е. К какому событию (ям) следует обращаться и к каким обработчикам событий должен быть присоединен?

Я хочу что-то наподобие системы в Gmail, которая может обрабатывать как сочетания клавиш, так и сочетания клавиш, например. Ctrl + B и т. Д. Код должен работать как в IE 6, так и в современных браузерах.

У меня есть готовая среда Prototype, но не jQuery, поэтому, пожалуйста, никаких специфичных для jQuery ответов!

Ответы [ 5 ]

6 голосов
/ 11 июля 2012

Просто подумал, что я добавлю еще один в микс. Недавно я выпустил библиотеку под названием Mousetrap. Проверьте это в http://craig.is/killing/mice

5 голосов
/ 04 марта 2009

Библиотека HotKey, доступная в пакете элементов управления LivePipe, работает с Prototype и совместима с IE.

http://livepipe.net/extra/hotkey

4 голосов
/ 06 марта 2009

JimmyP опубликовал это как комментарий, но он заслуживает того, чтобы быть ответом для голосования

http://www.openjs.com/scripts/events/keyboard_shortcuts/

3 голосов
/ 04 марта 2009

Что бы я сделал, это прикрепил события onKeyUp к document.body. Затем в этом обработчике событий я бы использовал метод Element.fire для запуска пользовательского события. Хотя этот шаг не является обязательным, он поможет отделить обработчик событий от выполняемого действия, и вы можете использовать тот же обработчик пользовательских событий, например, при нажатии кнопки.

$(document.body).observe("keyup", function() {
    if(/* key + modifier match */) {
        $(document.body).fire("myapp:mycoolevent");
    }
});

$(document.body).observe("myapp:mycoolevent", function() {
    // Handle event.
});

Позже, чтобы привязать то же событие к нажатию кнопки:

$(button).observe("click", function() {
    $(document.body).fire("myapp:mycoolevent");
});

Что касается обработки клавиш-модификаторов, обратитесь к этому ресурсу (очень старый, но все еще выглядит применимым) для получения дополнительной помощи.

2 голосов
/ 18 октября 2011

Существует также новая библиотека JavaScript под названием jwerty , она проста в использовании и не зависит от jQuery.

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