2013-08-11 17 views

risposta

4

Questa pagina jQuery dice quell'evento.che deve essere normalizzato per coerenza tra browser. Ma sembra che questo non sia vero.

jQuery normalizza la proprietà nome (ad esempio, sempre which, piuttosto che which o keyCode a seconda del browser), ma non il valore di della proprietà, che sarebbe drammaticamente più complessa.

Il valore per la chiave che si ottiene da keydown/keyup varia non solo dal browser, ma dal layout della tastiera. Ci sono molti dettagli cruenti sulla pagina JavaScript Madness: Keyboard Events di Jan Wolter. Tra le altre cose, puoi vedere su quella pagina che per quella chiave, Firefox ti darà 109, IE (e apparentemente Chrome) ti darà 189, e Opera apparentemente usato per andare con 45 (ma nei miei test su Linux, loro ora vai con 109).

Per sequenze di tasti stampabili (come -), si sta meglio con l'evento keypress, che vi dà il carattere risultante .

+0

Grazie mille per il chiarimento! –

+0

A partire da jQuery 1.11, non sembra che jQuery normalizzi completamente la proprietà 'event.which', almeno in FireFox. Come si può vedere qui: http://jsbin.com/sozoqiro/1/edit?html,console 'event.which' e' event.keyCode' hanno valori diversi a seconda della chiave che si preme. Premendo un carattere di stampa sembra popolare 'e.which' mentre il tasto Tab popola per esempio' e.keyCode' e il tasto Invio popola sia 'e.which' che' e.keyCode' con lo stesso valore. In FireFox, il valore della proprietà non popolato è impostato su '0'. – DavidScherer

+0

In Chrome, sembra essere normalizzato, ma "keypress" non sembra attivare i tasti Tab in Chrome. – DavidScherer