Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Запрет прокрутки (https://javascript.ru/forum/events/62207-zapret-prokrutki.html)

ruslan_mart 31.03.2016 05:53

Szorstki, потому что firefox прекратил поддержку keyCode.

Szorstki 31.03.2016 09:18

При чем здесь keyCode? Я может не правильно выразился. Блокирование клавиш как раз работает нормально. Не срабатывает только блокировка мыши.

рони 31.03.2016 09:33

Szorstki,
продублировать mousewheel для DOMMouseScroll или попробовать заменить mousewheel на wheel

destus 31.03.2016 09:33

Szorstki,
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body>
    <style>
        div {
            height: 2000px;
            border: 1px solid black;
        }
    </style>
    <script>
        $(function () {
          var keys = { 37: 1, 38: 1, 39: 1, 40: 1, 32: 1, 36 : 1, 35: 1 };
          $('.nav-icon').click(function () {
              $('body').toggleClass('nav-active');
          });
          $('body').on({
              'mousewheel DOMMouseScroll': function (e) {
                  if ($('body').hasClass('nav-active')){
                      e.preventDefault();
                      e.stopPropagation();
                  }
              },
              'keydown': function (e) {
                  var key = e.keyCode
                  if (keys[key] && $('body').hasClass('nav-active')) {
                      e.preventDefault();
                      e.stopPropagation();
                  }
                  if (key == 27) {
                      $('body').removeClass('nav-active')
                  }
              }
          })
      })
    </script>
    <div class="nav-icon"><span><span class="invisible">Меню</span></span></div>
</body>
</html>

Szorstki 31.03.2016 10:12

destus, спасибо. Теперь работает действительно везде и, как надо.

JAMLIGHT 21.11.2017 17:09

Цитата:

Сообщение от destus (Сообщение 412430)
<div style="height:2000px;"></div>
<script>
window.onscroll = () => window.scrollTo(0, 0);
</script>

как здесь запретить только прокрутку горизонтальную?

Nexus 21.11.2017 17:16

JAMLIGHT, "overflow-x:hidden;" не подходит?

JAMLIGHT 21.11.2017 17:24

подходит, только не работает в IE(работает прокрутка выделением ).Может есть кроссбраузерное решение или баг на сss для IE?

Nexus 21.11.2017 17:44

JAMLIGHT, это в верстке баг, если контент в область просмотра не помещается.

JAMLIGHT 21.11.2017 17:54

не дураки вроде. нету вылезших обьектов.в хроме всё норм а ie показывает пустоту справа при прокрутке выделением или полосой при разрешении ниже 320 px.другие браузеры не сужаются на столько


Часовой пояс GMT +3, время: 11:00.