De plus, tous les keyCode , qui , charCode et keyIdentifier sont obsolètes:
charCode
et ne keyIdentifier
sont pas des fonctionnalités standard.
keyIdentifier
est supprimé à partir de Chrome 54 et Opera 41.0
keyCode
renvoie 0, lors d'un événement de pression de touche avec des caractères normaux sur FF.
La propriété clé :
readonly attribute DOMString key
Contient une valeur d'attribut clé correspondant à la touche enfoncée
Au moment d'écrire ces lignes, la key
propriété est prise en charge par tous les principaux navigateurs à partir de: Firefox 52, Chrome 55, Safari 10.1, Opera 46. Sauf Internet Explorer 11 qui a:
des identifiants de clé non standard et un comportement incorrect avec AltGraph. Plus d'informations
Si cela est important et / ou la compatibilité descendante l'est, vous pouvez utiliser la détection de fonctionnalités comme dans le code suivant:
Notez que la key
valeur est différente de keyCode
ou which
properties en ce que: elle contient le nom de la clé et non son code. Si votre programme a besoin de codes de caractères, vous pouvez utiliser charCodeAt()
. Pour les caractères imprimables uniques, vous pouvez utiliser charCodeAt()
, si vous avez affaire à des clés dont les valeurs contiennent plusieurs caractères, comme le ArrowUp
sont les chances: vous testez des clés spéciales et prenez des mesures en conséquence. Essayez donc la mise en œuvre d' une table des valeurs clés et les codes correspondants charCodeArr["ArrowUp"]=38
, charCodeArr["Enter"]=13
, charCodeArr[Escape]=27
... et ainsi de suite, s'il vous plaît jeter un oeil à des valeurs clés et leurs codes correspondants
if(e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
/* As @Leonid suggeted */
var characterCode = e.which || e.charCode || e.keyCode || 0;
}
/* ... code making use of characterCode variable */
Peut-être souhaitez-vous envisager la compatibilité ascendante, c'est-à-dire utiliser les propriétés héritées tant qu'elles sont disponibles, et uniquement lorsqu'elles sont supprimées, passez aux nouvelles:
if(e.which || e.charCode || e.keyCode ){
var characterCode = e.which || e.charCode || e.keyCode;
}else if (e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
var characterCode = 0;
}
Voir aussi: la documentation sur la KeyboardEvent.code
propriété et quelques détails supplémentaires dans cette réponse .
.key
est pris en charge dans tous les principaux navigateurs developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/...