2013-08-11 19 views

Odpowiedz

4

Ta strona jQuery mówi o tym zdarzeniu, które powinno zostać znormalizowane pod kątem zgodności z przeglądarkami. Ale wygląda na to, że to nie jest prawda.

jQuery normalizuje właściwości nazwę (np zawsze which, zamiast which lub keyCode w zależności od przeglądarki), ale nie wartość nieruchomości , co byłoby znacznie bardziej skomplikowane.

Wartość klucza uzyskanego z keydown/keyup zależy nie tylko od przeglądarki, ale także od układu klawiatury. Na stronie JavaScript Madness: Keyboard Events Jana Woltera znajduje się wiele szczegółów. Między innymi na tej stronie możesz zobaczyć, że dla tego klucza Firefox da ci 109, IE (i podobno Chrome) da ci 189, a Opera podobno idzie z 45 (ale w moich testach na Linuksie, oni teraz iść z 109).

Do druku klawiszy (jak -), jesteś lepiej ze zdarzeniem keypress, co daje wynikające charakter.

+0

Wielkie dzięki za wyjaśnienie! –

+0

Z jQuery 1.11, nie wydaje się, że jQuery w pełni normalizuje właściwość 'event.which', przynajmniej pod FireFox. Jak można zobaczyć tutaj: http://jsbin.com/sozoqiro/1/edit?html,console 'event.which' i' event.keyCode' mają różne wartości w zależności od tego, jaki klawisz naciśniesz. Naciśnięcie znaku drukarkowego wydaje się wypełniać 'e., Który' podczas gdy klawisz Tab na przykład wypełnia 'e.keyCode', a klawisz Enter zapełnia zarówno' e.which' jak i 'e.keyCode' z tą samą wartością. W FireFox niepopulowana wartość właściwości jest ustawiona na "0". – DavidScherer

+0

W Chrome wydaje się być znormalizowany, ale 'keypress' prawdopodobnie nie uruchamia klawiszy Tab w Chrome. – DavidScherer

Powiązane problemy