Ich verwende den folgenden Code, um das Drücken von Benutzern in JavaScript zu erkennen:
$(document).bind("keydown", function (event) {
"use strict";
var keyCode = event.keyCode;
switch (keyCode) {
case "{N}":
doSomething();
break;
default:
break;
}
});
Woher doSomething
ist eine zuvor definierte Funktion und {N}
ist einer der JavaScript-Zeichencodes.
Es funktioniert ordnungsgemäß in allen gängigen Browsern, aber in Oper Selbst wenn eine Taste gedrückt bleibt, wird nur angerufen doSomething
einmal, anstatt es zu tun bis der Schlüssel wird losgelassen. Was kann ich tun, um das zu beheben?
Bearbeiten
Ich habe es mit dem gelöst keypress
Ereignis statt keydown
(was von Opera nicht gut gehandhabt wird).
Antworten:
0 für die Antwort № 1Dies ist ein bekannter Fehler, der (endlich!) werde bald repariert. Kurz gesagt, Tastendruckereignisse werden nicht wiederholt, während Tastendruckereignisse auftreten. Hören Sie stattdessen auf Tastendruck, wenn Sie eine Wiederholung wünschen (und sich nicht für Tasten interessieren, die NICHT in allen Browsern wie den meisten Funktionstasten gedrückt werden), sollte dies eine vernünftige Lösung für alle Browser sein.
1 für die Antwort № 2
Opera macht ein Durcheinander, das Keydown-Ereignis wird nicht wiederholt, und Sie können die Standardeinstellung für das Keydown in Opera nicht verhindern. Für mehr http://quirksmode.org/dom/events/