Además, todos los keyCode , que , charCode y keyIdentifier están obsoletos:
charCode
y keyIdentifier
son funciones no estándar.
keyIdentifier
se elimina a partir de Chrome 54 y Opera 41.0
keyCode
devuelve 0, en caso de pulsación de tecla con caracteres normales en FF.
La propiedad clave :
readonly attribute DOMString key
Mantiene un valor de atributo de tecla correspondiente a la tecla presionada
En el momento de escribir este artículo, la key
propiedad es compatible con todos los navegadores principales a partir de: Firefox 52, Chrome 55, Safari 10.1, Opera 46. Excepto Internet Explorer 11, que tiene:
identificadores de clave no estándar y comportamiento incorrecto con AltGraph. Más información
Si eso es importante y / o la compatibilidad con versiones anteriores lo es, puede usar la detección de características como en el siguiente código:
Observe que el key
valor es diferente de keyCode
o which
propiedades en que: contiene el nombre de la clave, no su código. Si su programa necesita códigos de caracteres, puede utilizarlos charCodeAt()
. Para caracteres únicos imprimibles que puede usar charCodeAt()
, si está tratando con claves cuyos valores contienen varios caracteres, como es ArrowUp
probable que esté probando claves especiales y tome las medidas correspondientes. A fin de tratar la implementación de una tabla de valores de Keys y sus códigos correspondientes charCodeArr["ArrowUp"]=38
, charCodeArr["Enter"]=13
, charCodeArr[Escape]=27
... y así sucesivamente, por favor miren valores clave y sus códigos correspondientes
if(e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
var characterCode = e.which || e.charCode || e.keyCode || 0;
}
Es posible que desee considerar la compatibilidad con versiones posteriores, es decir, usar las propiedades heredadas mientras estén disponibles, y solo cuando se suelten, cambie a las nuevas:
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;
}
Consulte también: los documentos deKeyboardEvent.code
propiedad y algunos detalles más en esta respuesta .
.key
es compatible con todos los principales desarrolladores de