Подтвердить что ты не робот

Как предотвратить прокрутку с помощью клавиш со стрелками, но не мышь?

Поскольку я использую jQuery, любое решение через это будет работать. В идеале, я бы хотел знать оба.

У меня уже есть клавиши со стрелками, привязанные к другой функции на моей странице (с использованием jQuery), но при этом они заставляют прокручивать страницу в дополнение к этому, вызывает у меня проблемы.

Возможно, я знал это в одно время, но я больше этого не помню.

4b9b3361

Ответ 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

Если вы добавите обработчик нажатия на уровне документа, это предотвратит нормальную прокрутку на странице в любое время, не только тогда, когда ваш элемент имеет фокус, это может быть нежелательным эффектом.