Além disso, todos os keyCode , which , charCode e keyIdentifier estão obsoletos:
charCodee keyIdentifiersão recursos não padrão.
keyIdentifieré removido a partir do Chrome 54 e o Opera 41.0
keyCoderetorna 0, no evento de pressionamento de tecla com caracteres normais no FF.
A propriedade principal :
readonly attribute DOMString key
Contém um valor de atributo de chave correspondente à tecla pressionada
No momento em que este livro foi escrito, a keypropriedade era suportada por todos os principais navegadores a partir de: Firefox 52, Chrome 55, Safari 10.1, Opera 46. Exceto o Internet Explorer 11 que tem:
identificadores de chave não padrão e comportamento incorreto com AltGraph. Mais informações
Se isso for importante e / ou a compatibilidade com versões anteriores for, você pode usar a detecção de recurso como no seguinte código:
Observe que o keyvalor é diferente de keyCodeou whichpropriedades porque: ele contém o nome da chave, não seu código. Se o seu programa precisa de códigos de caracteres, você pode fazer uso de charCodeAt(). Para caracteres únicos imprimíveis, você pode usar charCodeAt(), se estiver lidando com chaves cujos valores contenham vários caracteres, como as ArrowUp
chances são: você está testando chaves especiais e executa as ações de acordo. Então, tentar implementar uma tabela de valores chaves e seus códigos correspondentes charCodeArr["ArrowUp"]=38, charCodeArr["Enter"]=13, charCodeArr[Escape]=27... e assim por diante, por favor dê uma olhada em valores-chave e seus códigos correspondentes
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 */
Pode ser que você queira considerar a compatibilidade com versões futuras, ou seja, usar as propriedades legadas enquanto estão disponíveis e apenas quando for descartado, mude para as novas:
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;
}
Veja também: a documentação da KeyboardEvent.codepropriedade e mais alguns detalhes nesta resposta .
.keyé compatível com todos os principais navegadores developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/…