2013-08-11 13 views

Antwort

4

Diese jQuery-Seite besagt, dass event.which für Cross-Browser-Konsistenz normalisiert werden sollte. Aber es sieht so aus, als wäre das nicht wahr.

jQuery normalisiert die Eigenschaft Namen (zum Beispiel immer which, anstatt which oder keyCode je nach Browser), aber nicht der Wert der Immobilie, die dramatisch komplexer sein würde.

Der Wert für den Schlüssel, den Sie von keydown/keyup erhalten, wird nicht nur vom Browser, sondern auch vom Tastaturlayout abhängen. Auf der Seite JavaScript Madness: Keyboard Events von Jan Wolter finden sich viele blutige Details. Unter anderem kann man auf dieser Seite sehen, dass Firefox für diesen Schlüssel 109 ergibt, IE (und anscheinend Chrome) 189 und Opera anscheinend 45 (aber in meinen Tests unter Linux jetzt gehe mit 109).

Für druckbare Tastenanschläge (wie -), sind Sie besser dran mit dem keypress Ereignisse, das Ihnen den resultierendenCharakter verleiht.

+0

Vielen Dank für die Klärung! –

+0

Ab jQuery 1.11 scheint es, dass jQuery die Eigenschaft 'event.which' zumindest unter FireFox vollständig normalisiert. Wie hier zu sehen ist: http://jsbin.com/sozoqiro/1/edit?html,console 'event.which' und' event.keyCode' haben beide verschiedene Werte, je nachdem welche Taste gedrückt wird. Das Drücken eines Druckzeichens scheint "e.which" zu füllen, während die Tab-Taste zum Beispiel "e.keyCode" auffüllt und die Eingabetaste sowohl "e.which" als auch "e.keyCode" mit dem gleichen Wert füllt. In FireFox wird der Wert für die nicht gelieferte Eigenschaft auf "0" gesetzt. – DavidScherer

+0

In Chrome scheint dies normalisiert zu sein, aber 'keypress' scheint nicht für Tab-Tasten in Chrome ausgelöst zu werden. – DavidScherer

Verwandte Themen