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?
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.
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).
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
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);
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With