8

Web アプリケーションのホットキーを作成するコードがいくつかあります。ホットキーはすべて IE と Firefox で機能しますが、 Ctrl+PgUpCtrl+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.stopImmediatePropagationevt.stopPropagation

4

1 に答える 1

0

このリンクで同様の質問を確認してください。

Chrome - Javascript がデフォルトの Ctrl + MouseWheel の動作を妨げる

彼らは、クロムでは不可能であり、まだ対処されていると言っています!

于 2015-01-09T16:01:19.870 に答える