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!

Foi útil?

Solução

A biblioteca HotKey disponível no pacote controles LivePipe trabalha com Prototype e é IE compatível.

http://livepipe.net/extra/hotkey

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.

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top