Web アプリケーションのホットキーを作成するコードがいくつかあります。ホットキーはすべて IE と Firefox で機能しますが、 Ctrl+PgUpとCtrl+PgDnは Chrome では機能しません。
答えを探し回り、いくつかのカスタム テスト コードを書いた後、Chrome でこれらのイベントがキーダウンではなくキーアップで発生することが原因であると判断したと思います。
これらのイベントのデフォルトの Chrome ハンドラーは、私の代わりに (または少なくとも最初に) 起動し、ブラウザーを次または前のタブに切り替えます。ホットキーを使用してアプリケーションのタブに戻ると、ハンドラーがイベントをキャッチします。
私の質問は、Chrome でこれらのイベントをキャッチして、デフォルトの機能が実行されないようにする方法はありますか?
問題のコードは次のとおりです。
//These work in IE and Firefox
$(this).bind('keydown', 'ctrl+pageup', (evt) => {
this.prevPage();
return false;
});
$(this).bind('keydown', 'ctrl+pagedown', (evt) => {
this.nextPage();
return false;
});
//These catch the event in chrome, but it's too late
$(this).bind('keyup', 'ctrl+pageup', (evt) => {
this.prevPage();
return false;
});
$(this).bind('keyup', 'ctrl+pagedown', (evt) => {
this.nextPage();
return false;
});
IE と Firefox で必要なことは正確に実行されますが、Chrome では実行されません。とを試しましevt.preventDefault()
た。ただし、機能しません (ブラウザー ハンドラーの後にハンドラーが呼び出されているためだと思います)。evt.stopImmediatePropagation
evt.stopPropagation