1

今日、奇妙な問題が発生しました。以前は常に機能していたスクリプトが、すべての「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キーを追跡するある種の変数はありますか?

何か案は?

4

0 に答える 0