Robuste Tastenkombination Umgang mit JavaScript
-
03-07-2019 - |
Frage
Was ist die robusteste Art und Weise eine globale Tastaturkürzel-Handler für eine Webanwendung mithilfe von JavaScript heißt die Veranstaltung zu schaffen (n) sollte ich behandeln und was sollte der Event-Handler (n) angeschlossen werden?
Ich mag so etwas wie das System in Google Mail, die sowohl einzelne Tastendruck Verknüpfungen verarbeiten kann und auch Verknüpfungen mit Zusatztasten z.B. Strg + B usw. Der Code hat in IE 6 sowie modernem Browser arbeiten.
Ich habe den Prototyp Rahmen zur Verfügung zu verwenden, aber nicht jQuery, so bitte keine jQuery-spezifische Antworten!
Lösung
Die HotKey-Bibliothek zur Verfügung in dem LivePipe Kontrollen Paket arbeitet mit Prototype und ist IE kompatibel.
Andere Tipps
dachte nur, dass ich eine andere in den Mix werfen würde. Ich gab vor kurzem eine Bibliothek namens Mousetrap. Check it out bei http://craig.is/killing/mice
JimmyP gepostet als Kommentar, aber es verdient eine Antwort für die Abstimmung Zwecke zu sein.
Was würde ich tun, ist anhängen onKeyUp Ereignisse an den document.body. Dann wurde in diesem Ereignishandler, würde ich die Element.fire Methode ein benutzerdefiniertes Ereignis ausgelöst . Obwohl dieser Schritt optional ist, wird es bei der Entkopplung der Event-Handler von der Aktion helfen, durchgeführt werden, und können Sie die gleichen benutzerdefinierten Ereignishandler verwenden, um von einer Schaltfläche klicken Ereignis sagen.
$(document.body).observe("keyup", function() {
if(/* key + modifier match */) {
$(document.body).fire("myapp:mycoolevent");
}
});
$(document.body).observe("myapp:mycoolevent", function() {
// Handle event.
});
Später das gleiche Ereignis auf eine Schaltfläche klicken binden:
$(button).observe("click", function() {
$(document.body).fire("myapp:mycoolevent");
});
Was Modifikatortasten Handhabung angeht Besuche dieser Ressource (sehr alt, aber immer noch anwendbar aussieht) für weitere Hilfe.
Es gibt auch neue genannt JavaScript-Bibliothek jwerty , dann ist es einfach zu bedienen und beruht nicht auf jQuery.