Safari Отмена скролла для портретного отображения

Столкнулся в разработке с такой проблемой, что в браузере Safari нельзя просто так заблокировать (их уникальный свайп скролл) через свойства body{heightL100vh; overflow:hidden;} пользователь все равно может "потянуть" экран. Нашел решение, которое через JS блокирует это

$('body').on('touchmove', function (event) {
  event.preventDefault();
}, false);

Но теперь у меня возникла следующая проблема. - Необходимо что б при портретном(Portrait) отображении скролл блокировался, а при Пейзажном(Landscape) - нет, и пользователь мог проскроллить.

Собственно вопрос как отловить это событие и в зависимости от позиционирования мобильного Apple блокировать или нет скролл?

  • Я пробовал отслеживать через
    var mql = window.matchMedia("(orientation: portrait)");

// If there are matches, we're in portrait
    if(mql.matches) {
        // Portrait orientation
        alert('Portrait');

    } else {
        // Landscape orientation
        alert('Landscape');
    }

// Add a media query change listener
    mql.addListener(function(m) {
        if(m.matches) {
            // Changed to portrait
            alert('Portrait');
        }
        else {
            // Changed to landscape
            alert('Landscape');
        }
    });

В Chrome это всё работает, в Safari Согласно документации меня ждал облом. Screen.orientation не отлавливается.


Ответы (0 шт):