非常に簡単です:
ユーザーが矢印キーを押したときにブラウザがスクロールしないようにすることは可能ですか?
はい。次のようなものを使用します: 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;
}
}
そうするのは良い考えではないかもしれませんが。より良いアプローチを見落としていないことを確認してください。
非常に率直です: はい、しかしそれをしないでください。
ブラウザの基本的な動作を変更すると、ユーザーが混乱したり怒ったりするだけで、エクスペリエンス全体がユーザー フレンドリーではなくなります。ブラウザの機能を最終的に制御できるのはユーザーであり、あなたではありません。これは、メニュー項目へのアクセスをブロックしたり、コンテキスト メニューを削除したりすることに似ています。
多くの人がブラウザの機能を壊さないように言っているようです。
同様の機能またはより優れた機能に置き換えない限り、私は同じことを主張します。
キーボードの「下」キーと「上」キーを使用してアイテムを選択する要素にキーボードイベントを追加したため、オーバーフローのある要素でキーボードスクロールを頻繁に強制終了します(ファインダーまたはWindowsエクスプローラーウィンドウを考えてください)。
デフォルトのスクロールは、相互作用をすべて奇抜にしました。一番上のアイテムが選択されている場合、「下」キーを押すと、次のアイテムが選択されますが、要素が下にスクロールされ、選択されたばかりのものが非表示になります。
したがって、デフォルトのスクロールを中断し、現在のスクロール ビューの下 (または上) にある場合は、選択した項目にスクロールする独自のスクロールを追加します。そうすれば、ファイルをキーアップおよびキーダウンするときに、そこにある任意の OS とまったく同じように動作します。
好きなだけ壊してくださいと言っているだけですが、なぜそれを壊しているのかを理解し、ユーザーが何も気付かないことを確認してください。
jQueryでは次のことができます:
$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; });
keydown イベントをリッスンし、デフォルトの動作を防ぎます。
jqueryで
$(document).on('keydown.yournamespace', function(e) {e.preventDefault();});
おそらくですが、誰もが知っていて理解している慣習を破ることは、通常は良い考えではありません:D
JQuery で
$("*").keypress(function(e){e.preventDefault(); return false;});