Как отключить скролл страницы при клике на пробел

Хочу убрать скролл страницы при нажатии на пробел. Пробовал preventDefault() - не сработал. Далее захотел исправить это так:

window.addEventListener('keydown', e => {
 if (e.keyCode === 32) {
   document.documentElement.scrollIntoView({
     block: 'start'
   });
 }
});

Но это работало некорректно, хотел бы понять, как можно это исправить


Ответы (1 шт):

Автор решения: Slavik

Как мы уже выяснили в комментариях preventDefault в этом же обработчике всё-таки успешно останавливает скролл и является решением проблемы:

window.addEventListener('keydown', (e) => {  
  if (e.keyCode === 32 && e.target === document.body) {  
    e.preventDefault();  
  }  
});

Поскольку метод preventDefault предотвращает (отменяет) дефолтное действие, заданное браузером, то необходимо проверять, в контексте какого элемента он вызывается (e.target === document.body), иначе бы и предотвращалось написание пробелов в тексте в таких элементах как input, textarea.

→ Ссылка