2013-08-30 3 views
12

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

私は既にoverflow:hiddenタグとmetaタグビューポートを使用しています。

ありがとうございました。

+0

右側の「関連する」サイドバーを確認してください。 http://stackoverflow.com/questions/2343573/pressing-spacebar-moves-page-down – showdev

答えて

29

これはトリックを行う必要があります。ページ/ドキュメント上でスペースバーを押すと、デフォルト動作を妨げるだけでなく、元の状態に戻ります。

return falseにはpreventDefaultが含まれているようです。 Source

は、KeyDownイベントイベントの詳細については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; 
    } 
}); 

EDIT

を@アンバー・ド・黒が述べたように"上記のコードは、 HTML入力上のスペースキー "を選択します。この問題を解決するには、e.targetスペースバーを正確にブロックしたい場所。これにより、スペースバーがHTML入力のような他の要素をブロックするのを防ぐことができます。

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

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

:あなたはjQueryのではなくe.keyCodeSourcee.whichを使用して使用している場合。

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

jQueryのイベントの様々な正規化として作用します。それを読んでいる人にとっては驚きになるでしょう。彼らのEvent Objectのドキュメントを読むことをお勧めします。

+1

このコードは、HTML入力のスペースキーを押すことをブロックすることができます。あなたは完全な正解をここ(e.target === document.body)でチェックする必要があります:http://stackoverflow.com/a/22559917/3120495 – Ujeenator

0

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

あなたがいない場合は、ここで説明するように、あなたがスペースバーのキー入力をキャプチャし、無視することができます。スペースバーがある場合 https://stackoverflow.com/a/2343597/1019092

+0

@Alberto - 「これは、ほとんどのブラウザで予想される動作です。私はそれを使用しています。すべての時間と私は非常にページ内で動作しないときに非常に迷惑を取得します。 "* –

6

を検出します押されている。そうであれば、そのデフォルト動作を防ぎます。

document.documentElement.addEventListener('keydown', function (e) { 
    if ((e.keycode || e.which) == 32) { 
     e.preventDefault(); 
    } 
}, false); 
関連する問題