Можно ли предотвратить прокрутку документа при нажатии клавиш со стрелками? - PullRequest
1 голос
/ 26 мая 2009

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

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

Ответы [ 7 ]

10 голосов
/ 26 мая 2009

да. использовать что-то вроде: 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;
    }
}

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

7 голосов
/ 26 мая 2009

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

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

2 голосов
/ 26 мая 2009

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

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

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

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

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

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

1 голос
/ 26 мая 2009

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

$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; });
0 голосов
/ 13 ноября 2013

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

В jquery

$(document).on('keydown.yournamespace', function(e) {e.preventDefault();});
0 голосов
/ 26 мая 2009

В JQuery

$("*").keypress(function(e){e.preventDefault(); return false;});
0 голосов
/ 26 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...