Reduzir problemas de comportamento no Windows

2

Recentemente eu estou correndo para este problema na minha máquina windows, onde se eu segurar qualquer tecla, a seqüência de eventos-chave são key up e key down repetidamente.

Neste site de testes principais , se eu segurar minha tecla TAB, recebo:

keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0

Tenho certeza de que não devo ver vários eventos key up . O ideal seria ver vários eventos key down e, no final, um evento key up .

Eu tentei mudar meu teclado e isso não ajuda. Todas as configurações do meu teclado do Windows parecem normais (sem teclas fixas / de filtro configuradas).

Estou ficando sem ideias sobre como encontrar uma causa básica para esse problema.

Qualquer ajuda seria muito apreciada.

Obrigado.

    
por bits 19.08.2015 / 05:17

1 resposta

0

Seu problema não está no Windows, mas uma consequência de como o seu navegador da Web implementa o manuseio do teclado.

Por exemplo, no Internet Explorer, obtemos:

keydown  keyCode=9         which=9         charCode=0
keydown  keyCode=9         which=9         charCode=0
keydown  keyCode=9         which=9         charCode=0
keydown  keyCode=9         which=9         charCode=0
keydown  keyCode=9         which=9         charCode=0
keyup    keyCode=9         which=9         charCode=0

Enquanto no Firefox, recebemos isso:

keydown  keyCode=9         which=9         charCode=0
keypress keyCode=9         which=0         charCode=0
keydown  keyCode=9         which=9         charCode=0
keypress keyCode=9         which=0         charCode=0
keydown  keyCode=9         which=9         charCode=0
keypress keyCode=9         which=0         charCode=0
keyup    keyCode=9         which=9         charCode=0

Você pode encontrar esta referência útil. Em particular, veja a seção 3.2. Valores clássicos retornados em eventos de caractere . O único problema é que essa referência parece terrivelmente desatualizada. Mas o princípio fundamental está lá. Navegadores diferentes fazem as coisas de maneira diferente:

When keypress events are generated for special keys, the browser needs to return some non-ASCII value to indicate which key ways pressed. We'll see that various different browsers do this in different ways.

EDITAR: Uma referência mais atualizada .

    
por 19.08.2015 / 06:50