Как избежать, чтобы указанная c прокрутка элемента не отключалась? - PullRequest
0 голосов
/ 17 марта 2020

В ipad pro я пытаюсь отключить прокрутку, если всплывающее окно открыто, и включить прокрутку назад, если всплывающее окно закрывается. Я нашел решение, которое работает отлично, но оно также блокирует прокрутку внутреннего элемента.

function preventDefault(e){
  e.preventDefault();
}
function disableScroll() {
  document.body.addEventListener('touchmove', preventDefault, { passive: false });
}
function enableScroll() {
  document.body.removeEventListener('touchmove', preventDefault);
}

Здесь у меня есть элемент внутри всплывающего окна, который можно прокручивать и имеет имя класса window-content . Приведенное выше решение блокирует прокрутку для всей страницы, что означает, что оно также блокирует прокрутку для внутреннего содержимого всплывающего окна. Я попробовал приведенный ниже код, чтобы разрешить прокрутку внутри pop, но это не сработало.

function disableScroll() {
  document.body.addEventListener('touchmove', preventDefault, { passive: false });
  document.getElementsByClassName('window')[0].getElementsByClassName('window-content')[0].removeEventListener('touchmove', preventDefault);
}

Я хочу разрешить прокрутку внутри popup, и она должна отключаться только для тела. Спасибо.

1 Ответ

1 голос
/ 18 марта 2020

Я изменил функцию warnDefault, чтобы исключить конкретный элемент.

preventDefault: function(e) {
    if($(e.target).closest(".k-window").length == 0) {
        e.preventDefault();
    }
},

Исправлено.

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