Можно ли предотвратить прокрутку документа при нажатии клавиш со стрелками?

StackOverflow https://stackoverflow.com/questions/910724

Вопрос

Очень просто:

Можно ли запретить прокрутку браузера при нажатии пользователем клавиш со стрелками?

Это было полезно?

Решение

Очень просто:Да, но не делай этого.

Изменение фундаментальных принципов работы браузера просто сбивает с толку или злит пользователей и делает весь процесс менее удобным для пользователя.Пользователь должен иметь полный контроль над работой своего браузера, а не вы.Это похоже на блокировку доступа к пунктам меню или удаление контекстных меню и т. д.

Другие советы

да.используйте что-то вроде:document.getElementById('yourID').onkeypress = HandleKeyPress;

function HandleKeyPress(e) {
    var e = e || window.event;
    switch (e.keyCode) {

        case e.DOM_VK_LEFT:
        case e.DOM_VK_RIGHT:
        case e.DOM_VK_UP:
        case e.DOM_VK_DOWN:
            if (e.preventDefault)
                e.preventDefault();
            else e.returnValue = false;
    }
}

Хотя, возможно, это не лучшая идея.просто убедитесь, что вы не упускаете из виду лучший подход.

Кажется, многие говорят, что нельзя нарушать то, что делает браузер.

Я бы сказал то же самое, если только вы не замените его аналогичной или лучшей функциональностью.

Я часто отключаю прокрутку клавиатуры в элементах с переполнением, потому что я добавил событие клавиатуры к элементу, где с помощью клавиш «вниз» и «вверх» на клавиатуре выбираются элементы (подумайте об окне поиска или проводнике Windows).

Прокрутка по умолчанию делала взаимодействие странным.Если был выбран верхний элемент, то вы нажимаете «вниз», он выберет следующий элемент, но затем прокрутит элемент вниз и скроет то, что было только что выбрано.

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

Просто говорю: ломайте все, что хотите, но убедитесь, что вы знаете, почему вы это ломаете, и пользователь ничего не заметит.

в jQuery вы можете сделать:

$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; });

Возможно, но обычно не стоит нарушать соглашение, которое все знают и понимают :D

прослушайте событие keydown и предотвратите поведение по умолчанию.

В jquery

$(document).on('keydown.yournamespace', function(e) {e.preventDefault();});

В JQuery

$("*").keypress(function(e){e.preventDefault(); return false;});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top