Keyup no se dispara cuando keydown abre una alerta
Tengo dos manejadores de eventos, uno para keydown y otro para keyup. El controlador de eventos keydown activa un mensaje de alerta, pero esto evita que se active el evento keyup.
Puedes ver un ejemplo muy simple aquí:http://jsfiddle.net/boblauer/jaGwT/ Cuando el keydown abre una alerta, el keyup no se dispara, pero cuando no se abre una alerta, el keyup se dispara. Aquí está el código del 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');
});
Tengo una biblioteca que admite la escucha de múltiples combinaciones de teclas (como 'd + f'), por lo que cuando se presiona una tecla, necesito agregarla a una lista de teclas que se presionan actualmente, y cuando se suelta una tecla, Necesito quitarlo de dicha lista. El problema al que me estoy enfrentando es que, si quiero que se muestre una alerta cuando se presiona d + f al mismo tiempo, mi código para eliminar esas teclas de la lista 'presionada actualmente' nunca se dispara, porque nunca se llama a mi controlador de teclas. .
No puedo pensar en una buena solución a este problema. ¿Algunas ideas?