LINUX.ORG.RU

отключить прокруткку по нажатию стрелок

 


0

1

Всем доброго времени суток.

Возникла задача отключить стандартное поведение клавиш со стрелками вверх/вниз, обеспечивающих прокрутку страницы.

Пробовал гуглить - нашел только похожее решение для события прокрутки колесика мыши:

if (elem.addEventListener) {
	 // IE9+, Opera, Chrome/Safari
	 elem.addEventListener ("mousewheel", onMouseWheel, false);
	 // Firefox
	 elem.addEventListener ("DOMMouseScroll", onMouseWheel, false);
} else { // IE<9
	 elem.attachEvent ("onmousewheel", onMouseWheel);
}
		
function onMouseWheel(e) {
	e = e || event;
	// отменить действие по умолчанию (прокрутку элемента/страницы)
	e.preventDefault ? e.preventDefault() : (e.returnValue = false);
}

Собственно, вопрос - как провернуть то же со стрелками? Пробовал вместо onmousewheel/других обработчиков воткнуть onkeypress или onkeydown - не работает...

★★
Ответ на: комментарий от special-k

Просто убрать скроллбар не годится) Не охота самому велосипедить с прокруткой.

Проблему решил путем явного указания обработчика в теге body:

<script>
  function checkKey (e) {
	e = e || event;
	alert (e.keyCode);
	e.preventDefault ? e.preventDefault() : (e.returnValue = false);
  }
</script>
<body onkeydown="checkKey (event)">

Может, не очень красиво, но зато работает.

solovey ★★
() автор топика

Потому что keydown нужен если хочешь отменить.

var NAVIGATION = [37, 38, 39, 40]

document.body.addEventListener("keydown", function(event) {
	if (-1 != NAVIGATION.indexOf(event.keyCode))
		event.preventDefault();
})
Но юзеры такое не одобрят, а на планшетах и прочих девайсах чёрт знает что будет. И кроме того, прокрутка есть на PageUp/Down, пробеле и чёрт знает где ещё. Ты скорее всего не с того конца к проблеме подходишь.

Kalashnikov ★★★
()

А зачем? Мне кажется, что ты не правильно решаешь проблему.

mopsene ★★★
()
Ответ на: комментарий от Boba_Fett

Ну, я сделал это максимально безболезненно. Keyboards Events 3 ещё совсем в зародыше.

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

Kalashnikov ★★★
()
Ответ на: комментарий от Kalashnikov

Нет, мне как-раз надо было не убрать прокрутку вообще, а убрать ее только по нажатию стрелок. У меня на эти стрелки свой обработчик повешен, и прокрутка там вообще не в тему.

А по поводу планшетов и прочих девайсов - я пилю веб-морду к одной специфичной софтине, вряд ли туда кто-то с планшета полезет...

solovey ★★
() автор топика
Ответ на: комментарий от Kalashnikov

да я в результате так и сделал... Просто параллельно со всем разбирался.

solovey ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.