1

非常に簡単です:

ユーザーが矢印キーを押したときにブラウザがスクロールしないようにすることは可能ですか?

4

7 に答える 7

10

はい。次のようなものを使用します: document.getElementById('yourID').onkeypress = HandleKeyPress;

function HandleKeyPress(e) {
    var e = e || window.event;
    switch (e.keyCode) {

        case e.DOM_VK_LEFT:
        case e.DOM_VK_RIGHT:
        case e.DOM_VK_UP:
        case e.DOM_VK_DOWN:
            if (e.preventDefault)
                e.preventDefault();
            else e.returnValue = false;
    }
}

そうするのは良い考えではないかもしれませんが。より良いアプローチを見落としていないことを確認してください。

于 2009-05-26T13:45:11.650 に答える
7

非常に率直です: はい、しかしそれをしないでください。

ブラウザの基本的な動作を変更すると、ユーザーが混乱したり怒ったりするだけで、エクスペリエンス全体がユーザー フレンドリーではなくなります。ブラウザの機能を最終的に制御できるのはユーザーであり、あなたではありません。これは、メニュー項目へのアクセスをブロックしたり、コンテキスト メニューを削除したりすることに似ています。

于 2009-05-26T13:48:47.740 に答える
2

多くの人がブラウザの機能を壊さないように言っているようです。

同様の機能またはより優れた機能に置き換えない限り、私は同じことを主張します。

キーボードの「下」キーと「上」キーを使用してアイテムを選択する要素にキーボードイベントを追加したため、オーバーフローのある要素でキーボードスクロールを頻繁に強制終了します(ファインダーまたはWindowsエクスプローラーウィンドウを考えてください)。

デフォルトのスクロールは、相互作用をすべて奇抜にしました。一番上のアイテムが選択されている場合、「下」キーを押すと、次のアイテムが選択されますが、要素が下にスクロールされ、選択されたばかりのものが非表示になります。

したがって、デフォルトのスクロールを中断し、現在のスクロール ビューの下 (または上) にある場合は、選択した項目にスクロールする独自のスクロールを追加します。そうすれば、ファイルをキーアップおよびキーダウンするときに、そこにある任意の OS とまったく同じように動作します。

好きなだけ壊してくださいと言っているだけですが、なぜそれを壊しているのかを理解し、ユーザーが何も気付かないことを確認してください。

于 2009-05-26T15:43:25.310 に答える
1

jQueryでは次のことができます:

$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; });
于 2009-05-26T13:46:30.100 に答える
0

keydown イベントをリッスンし、デフォルトの動作を防ぎます。

jqueryで

$(document).on('keydown.yournamespace', function(e) {e.preventDefault();});
于 2013-11-13T04:07:27.923 に答える
0

おそらくですが、誰もが知っていて理解している慣習を破ることは、通常は良い考えではありません:D

于 2009-05-26T13:44:39.420 に答える
-2

JQuery で

$("*").keypress(function(e){e.preventDefault(); return false;});
于 2009-05-26T13:46:28.260 に答える