今日、奇妙な問題が発生しました。以前は常に機能していたスクリプトが、すべての「keydown」イベントの直後に「keyup」が起動され、長いキープレスを待っていたいくつかのイベントが強制終了されたため、機能しなくなりました。
試してみたところ、私の相乗効果がその原因であることがわかりました。
最後に、問題の解決策を見つけました: 特定のイベントを遅延 (および収集) できる jQuery 拡張機能、つまりhttp://benalman.com/projects/jquery-throttle-debounce-plugin/
$(window).keyup( $.debounce(100, onKeyUp) )
別の問題に気付くまで、これは少しうまくいきました:一度に複数のキー。たとえば、「上」ボタンと「左」ボタンを押して、両方を同時に放したとします。$.debounce() は両方を同じ keyup イベントとして処理し、イベントを 1 回だけ発生event.keyCode
させ、両方ではなく 1 つのキーのみを含むようにします。
最も簡単な解決策は、 keyup イベントが発生したときに押されたすべてのキーをチェックすることevent.keyCode
です。この場合は不完全であるため、依存しません。
私の問題は、キーダウン/キーアップイベントに依存せずに、他のキーがまだ押されていることをどのように確認できるかです。(相乗効果でうまくいかないので)
function onKeyUp(event) {
// get all keys pressed
}
window
キーを追跡するある種の変数はありますか?
何か案は?