Além disso, todos os keyCode , which , charCode e keyIdentifier estão obsoletos:
charCode
e keyIdentifier
são recursos não padrão.
keyIdentifier
é removido a partir do Chrome 54 e o Opera 41.0
keyCode
retorna 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 key
propriedade 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 key
valor é diferente de keyCode
ou which
propriedades 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.code
propriedade e mais alguns detalhes nesta resposta .
.key
é compatível com todos os principais navegadores developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/…