A chave não dispara quando o keydown abre um alerta
Eu tenho dois manipuladores de eventos, um para keydown e um para keyup. O manipulador de eventos keydown aciona uma mensagem de alerta, mas isso impede que o evento de ativação seja disparado.
Você pode ver um exemplo muito simples aqui:http://jsfiddle.net/boblauer/jaGwT/ Quando o keydown abre um alerta, a chave não é acionada, mas quando um alerta não é aberto, a chave é disparada. Aqui está o código do jsfiddle:
var i = 0;
window.addEventListener('keydown', function(e) {
if (i++ % 2) alert('down');
console.log('down');
});
window.addEventListener('keyup', function(e) {
alert('up');
console.log('up');
});
Eu tenho uma biblioteca que suporta ouvir várias combinações de teclas (como 'd + f'), então quando uma tecla é pressionada, eu preciso adicioná-la a uma lista de teclas que estão atualmente pressionadas, e quando uma tecla é liberada, Eu preciso removê-lo da lista. O problema que estou correndo é, se eu quiser um alerta para mostrar quando d + f são pressionados ao mesmo tempo, meu código para remover essas chaves da lista 'atualmente pressionado' nunca é acionado, porque meu manipulador de chaves nunca é chamado .
Não consigo pensar em um bom trabalho em torno desse problema. Alguma ideia?