web-dev-qa-db-fra.com

Désactiver le défilement vers le bas lorsque la barre d'espace est enfoncée sur Firefox

Je veux désactiver le défilement vers le bas lorsque j'ai appuyé sur la barre d'espace. Cela ne se produit que dans Firefox.

J'utilise déjà la fenêtre de débordement: caché et méta tag.

Merci.

21

Cela devrait faire l'affaire. Il indique que lorsque la barre d'espace est enfoncée sur la page/le document, elle n'empêche pas seulement son comportement par défaut, mais revient à son état d'origine.

return false semble inclure preventDefault. Source

Consultez les API JQuery pour plus d'informations sur les événements de keydown - http://api.jquery.com/keydown/

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

Exemple JQuery

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

[~ # ~] modifier [~ # ~] :

Comme l'a déclaré @ amber-de-black "le code ci-dessus bloquera la pression de la touche espace sur les entrées HTML". Pour résoudre ce problème, vous e.target où exactement vous voulez que la barre d'espace soit bloquée. Cela peut empêcher la barre d'espace de bloquer d'autres éléments comme les entrées HTML.

Dans ce cas, nous spécifions la barre d'espace avec la cible du corps. Cela empêchera les entrées d'être bloquées.

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

[~ # ~] note [~ # ~] : Si vous utilisez JQuery, utilisez e.which au lieu de e.keyCodeSource .

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

JQuery agit comme un normalisateur pour une variété d'événements. Si cela surprend quiconque lit ceci. Je recommande de lire leur documentation Event Object .

39
Michael Schwartz

Détectez si la barre d'espace est enfoncée. Si c'est le cas, empêchez son comportement par défaut.

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

Avez-vous essayé de capturer l'événement keydown en javascript? Si vous utilisez jQuery, vous pouvez en savoir plus sur la capture des événements clés ici: http://api.jquery.com/keydown/

Si vous ne l'êtes pas, vous pouvez capturer et ignorer la touche de la barre d'espace comme décrit ici: https://stackoverflow.com/a/2343597/1019092

0
S.E.T.