Определение ориентации мобильного экрана на устройствах со статическими размерами экрана, независимо от ориентации экрана

#javascript #html #css #mobile

Вопрос:

В настоящее время я создаю веб-сайт с портфолио, который выиграет от изменения макета сайта на дизайн с одной или двумя колонками в зависимости от ориентации экрана для мобильных браузеров. Сначала я попытался использовать @media (orientation:portrait) и @media (orientation:landscape) , но обнаружил, что мой Galaxy Note 8 будет запускать только ландшафтный режим, даже если телефон находится в портретной ориентации. Затем я грубо вынудил решение JS вот так:

         <link rel="stylesheet" type="text/css" href="mobileportrait.css" id="portrait" />
        <link rel="stylesheet" type="text/css" href="mobilelandscape.css" id="landscape" />
        <script type="text/javascript">
            if (screen.height <= screen.width) {
                document.getElementById('landscape').disabled = false;
                document.getElementById('portrait').disabled = true;
            }
            else {
                document.getElementById('landscape').disabled = true;
                document.getElementById('portrait').disabled = false;
            }
            window.addEventListener('resize', function(event){
                if (screen.height <= screen.width) {
                document.getElementById('landscape').disabled = false;
                document.getElementById('portrait').disabled = true;
                }
                else {
                    document.getElementById('landscape').disabled = true;
                    document.getElementById('portrait').disabled = false;
                } 
            });
        </script>
 

Но даже это загружает только таблицу стилей ландшафта на всех телефонах, с которыми я ее пробовал. Это наводит меня на мысль, что современные мобильные телефоны, на которые я нацеливаюсь, сообщают о самой длинной стороне как о ширине экрана, а о самой короткой стороне как о высоте экрана, независимо от фактической ориентации экрана, что приводит к тому, что CSS orientation и JS screen.height <= screen.width с треском выходят из строя.

Мой вопрос прост: как определить ориентацию мобильного телефона, который действует таким образом?