Как предотвратить прикосновение ко всем элементам, кроме одного, используя JavaScript? - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть поповер, и я хочу предотвратить прокрутку в фоновом режиме, когда он открыт.Сделать это для настольного компьютера с помощью CSS очень просто:

body { overflow: hidden; }

IOS, однако, не соблюдает это правило и по-прежнему позволяет прокручивать фон, когда пользователь фактически прокручивает поповер.

Отключениеприкосновение к элементу-обертке, который содержит все на странице, кроме всплывающего окна, не работает:

document.querySelector('.wrapper').addEventListener('touchstart touchmove touchend', function (e) {
    e.preventDefault();
});

Однако отключение касания везде работает:

$('*').bind('touchstart touchmove touchend', false);

Как я могу просто отключитьэто везде кроме элемента popover?

ОБНОВЛЕНИЕ

Popover CSS:

.popover {
    background: rgba(255,255,255,.5);
    background: white;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 100000;
}

1 Ответ

0 голосов
/ 17 февраля 2019

Другим способом было бы создать ваш поповер в виде одного полностраничного div, который действует, чтобы «блокировать» события от попадания в тело.Поместите поповер перед этим дивом.

Вы можете заблокировать событие, используя JS, как у вас, или с помощью element {point-events:none} и «отменить» его с помощью element {pointer-events:auto}

...