Как отключить скролл страницы при клике на пробел
Хочу убрать скролл страницы при нажатии на пробел. Пробовал 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.