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 не отлавливается.