web-dev-qa-db-ja.com

Firefoxでスペースバーを押したときに下にスクロールしないようにする

スペースバーを押したときのスクロールダウンを無効にしたい。これはFirefoxでのみ発生します。

私はすでにoverflow:hiddenおよびメタタグビューポートを使用しています。

ありがとう。

21

これでうまくいくはずです。ページ/ドキュメントでスペースバーを押すと、デフォルトの動作が妨げられるだけでなく、元の状態に戻ると記載されています。

falseを返すとpreventDefaultが含まれるようです。 ソース

キーダウンイベントの詳細については、JQuery APIを確認してください- http://api.jquery.com/keydown/

window.onkeydown = function(e) { 
    return !(e.keyCode == 32);
};

JQueryの例

$(document).keydown(function(e) {
    if (e.which == 32) {
        return false;
    }
});

[〜#〜]編集[〜#〜]

@ amber-de-blackが述べたように、「上記のコードはHTML入力でスペースキーを押すことをブロックします」。これを修正するには、e.targetスペースバーをブロックしたい場所。これにより、スペースバーがHTML入力などの他の要素をブロックするのを防ぐことができます。

この場合、ボディターゲットとともにスペースバーを指定します。これにより、入力がブロックされるのを防ぎます。

window.onkeydown = function(e) {
  if (e.keyCode == 32 && e.target == document.body) {
    e.preventDefault();
  }
};

[〜#〜]注[〜#〜]:JQueryを使用している場合はe.which の代わりに e.keyCodeソース

The event.which property normalizes event.keyCode and event.charCode

JQueryは、さまざまなイベントのノーマライザとして機能します。これを読んでいる人が驚いた場合。 Event Object のドキュメントを読むことをお勧めします。

39

スペースバーが押されているかどうかを検出します。そうであれば、デフォルトの動作を回避します。

document.documentElement.addEventListener('keydown', function (e) {
    if ( ( e.keycode || e.which ) == 32) {
        e.preventDefault();
    }
}, false);
8
banzomaikaka

JavaScriptでキーダウンイベントをキャプチャしようとしましたか? jQueryを使用している場合は、ここでキーイベントのキャプチャについて詳しく読むことができます。 http://api.jquery.com/keydown/

そうでない場合は、ここで説明するようにスペースバーのキープレスをキャプチャして無視できます: https://stackoverflow.com/a/2343597/1019092

0
S.E.T.