Teclado robusto atalho manipulação usando JavaScript
-
03-07-2019 - |
Pergunta
O que é a maneira mais robusta de criar um manipulador de atalho de teclado global para um aplicativo da Web usando JavaScript ou seja, qual evento (s) que eu deveria segurar e qual deve ser o manipulador de eventos (s) ser ligado a?
Eu quero algo como o sistema no Gmail que pode lidar com ambos os atalhos keypress individuais e também atalhos com teclas modificadoras por exemplo Ctrl + B etc. O código tem de trabalhar no IE 6, assim como os navegadores modernos.
Eu tenho o quadro Prototype disponíveis para uso, mas não jQuery, então, por favor, sem respostas específicas do jQuery!
Solução
A biblioteca HotKey disponível no pacote controles LivePipe trabalha com Prototype e é IE compatível.
Outras dicas
Apenas pensei em jogar outro na mistura. Recentemente, lançou uma biblioteca chamada Mousetrap. Confira em http://craig.is/killing/mice
JimmyP postei isso como um comentário, mas que merece ser uma resposta para fins de voto.
O que eu gostaria de fazer é anexar onKeyUp eventos ao document.body. Então, neste manipulador de eventos, eu usaria o método Element.fire para disparar um evento personalizado . Embora este passo é opcional, ele vai ajudar na dissociação o manipulador de eventos a partir da ação a ser executada, e você pode usar o mesmo manipulador personalizado evento de dizer um evento clique de botão.
$(document.body).observe("keyup", function() {
if(/* key + modifier match */) {
$(document.body).fire("myapp:mycoolevent");
}
});
$(document.body).observe("myapp:mycoolevent", function() {
// Handle event.
});
Mais tarde, para ligar o mesmo evento a um clique de botão:
$(button).observe("click", function() {
$(document.body).fire("myapp:mycoolevent");
});
Quanto manipulação teclas modificadoras está em causa, veja este recurso (muito antiga, mas ainda parece aplicável) para obter mais ajuda.
Há também nova biblioteca JavaScript chamada jwerty , é fácil de usar e não depende de jQuery.