キーダウン用とキーアップ用の2つのイベントハンドラーがあります。キーダウンイベントハンドラーはアラートメッセージをトリガーしますが、これによりキーアップイベントが発生しなくなります。
非常に簡単な例をここで見ることができます:http: //jsfiddle.net/boblauer/jaGwT/ キーダウンがアラートを開くとき、キーアップは起動されませんが、アラートが開かれないとき、キーアップは起動されます。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');
});
複数のキーの組み合わせ(「d + f」など)のリッスンをサポートするライブラリがあるので、キーが押されたときに、現在押されているキーのリストに追加する必要があります。キーが離されたときに、上記のリストから削除する必要があります。私が実行している問題は、d + fが同時に押されたときにアラートを表示したい場合、キーアップハンドラーが呼び出されないため、「現在押されている」リストからこれらのキーを削除するコードが実行されないことです。 。
この問題に対する良い回避策は考えられません。何か案は?