Moin @@beatovich,
Der folgende Code wird bei jedem Keydown Event (auf body registriert) ausgeführt:
Wird der komplette Code bei jedem Event ausgeführt oder nur die Funktion? Ersteres scheint mir unnötig, da sich die Variablen bindings
und keyFunction
nicht ändern und die Funktion keyController
auch nur einmal definiert werden muss.
Ansonsten hätte ich folgende Ideen, die du mal ausprobieren kannst:
- Die Berechnung der Variable
code
ist doch eigentlich ein Bitmuster, wobei das sogar ohne Bitschubsen geht:
code = ev.target === ta + 2 * !!ev.shiftKey + 4 * !!ev.ctrlKey + 8 * ev.altKey;
- Die flache Datenstruktur von
bindings
mit dem String-basierten Dictionary-Lookup in einen Baum mit den Event-Eigenschaften überführen:
bindings[ev.target][ev.shiftKey][ev.ctrlKey][ev.altKey];
// oder als Methodenaufruf, in dem die Attribute zugeordnet werden:
bindings.call(ev);
- Notation der Methoden in
keyFunction
nicht als Strings:
const keyFunction = {
ENCODE_HTML: function() { /* … */ },
// …
};
- Notation der Methoden direkt in
bindings
.
Viele Grüße
Robert