Как предотвратить прокрутку с помощью клавиш со стрелками, но не мышь?
Поскольку я использую jQuery, любое решение через это будет работать. В идеале, я бы хотел знать оба.
У меня уже есть клавиши со стрелками, привязанные к другой функции на моей странице (с использованием jQuery), но при этом они заставляют прокручивать страницу в дополнение к этому, вызывает у меня проблемы.
Возможно, я знал это в одно время, но я больше этого не помню.
Ответы
Ответ 1
Добавление обработчика нажатия на уровне документа делает трюк!
var ar=new Array(33,34,35,36,37,38,39,40);
$(document).keydown(function(e) {
var key = e.which;
//console.log(key);
//if(key==35 || key == 36 || key == 37 || key == 39)
if($.inArray(key,ar) > -1) {
e.preventDefault();
return false;
}
return true;
});
Ответ 2
При некоторых обстоятельствах, например. когда вы на самом деле не имеете элемента, на котором вы сосредоточены, только в какой-то области, которую вы должны были щелкнуть, вы, возможно, не слишком много контролируете обработчик и предотвращаете событие на глобальном уровне, может быть немного вяло в лучшем случае (как я нашел из трудного пути).
Простейшим решением в этих случаях является привязка к клику даже кнопки управления и фокусировка на пустом элементе ввода, который вы позиционируете -9000px влево.
Затем вы можете надежно блокировать событие с помощью keydown, а также не беспокоиться о блокировке поведения по умолчанию или других глобальных прослушивателей, поскольку поведение по умолчанию на элементе ввода просто перемещает курсор влево и вправо.
Ответ 3
Если вы добавите обработчик нажатия на уровне документа, это предотвратит нормальную прокрутку на странице в любое время, не только тогда, когда ваш элемент имеет фокус, это может быть нежелательным эффектом.