Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML prevent space bar from scrolling page

I'm using the code:

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

which does exactly what I want, stops the page from scrolling when the spacebar is pressed. However it also prevents the user from typing spaces in a textbox

Is there a way to prevent the spacebar-scroll as well as retain the spacebar functionality while typing?

like image 261
Parad0x13 Avatar asked Mar 21 '14 13:03

Parad0x13


People also ask

How do I stop my spacebar from scrolling?

To prevent the pressing of the space bar from scrolling the page with JavaScript, we can listen to the keydown event with window. addEventListener . Then in the event handler, we can detect pressing the space bar on the body element.

Why does spacebar scroll down?

A browser primary action is to scroll because the web is still about reading content. It's simple (just go down), it's repeated (you scroll step by step), and it's forgivable (you can use your mouse or your arrows or even shift+space to go back).


2 Answers

Try checking if target is the body:

window.addEventListener('keydown', function(e) {    if(e.keyCode == 32 && e.target == document.body) {      e.preventDefault();    }  });
body { height: 100000px; }
<input />  <textarea></textarea>

Demo

like image 116
Oriol Avatar answered Sep 22 '22 04:09

Oriol


You could look into e.target and if it is the body you return false.

window.onkeydown = function(e) { 
  return !(e.keyCode == 32 && e.target == document.body);
}; 
like image 31
Stephan Avatar answered Sep 23 '22 04:09

Stephan