JavaScript-алгоритм для определения ориентации планшета

Мы создаем приложение HTML5 / JavaScript, разработанное для планшетов, и мы хотим разложить мои экраны по-разному в ландшафтном или портретном.

Первоначально мы фиксировали уведомления об изменении ориентации и отслеживали текущую ориентацию (обычно сообщаемую как 0, 90, -90 или 180 градусов – см. Этот вопрос ). К сожалению, разные устройства сообщают о разных ориентациях как «0» . Эта ссылка утверждает, что это ошибка, но есть некоторые доказательства того, что это работает по мере разработки – например, в этой статье предполагается, что «пейзаж» является ориентацией по умолчанию, и эти устройства сообщают о ориентации «0» при сохранении в ландшафте Режим.

Затем мы попытались просто посмотреть фактический размер экрана, предполагая, что когда ширина была больше высоты, мы были в ландшафтном режиме. Но этот алгоритм запутывается, когда отображается экранная клавиатура – когда отображается клавиатура, возвращаются размеры видимой области. Когда устройство, строго говоря, находится в портретном режиме, но часть экрана, не закрытая клавиатурой, шире, чем высокая.

Ответ на этот вопрос довольно старый. Это лучший ответ? Кто-нибудь имеет хороший алгоритм, который учитывает видимость клавиатуры?

http://jsfiddle.net/jjc39/

Попробуй это:

 <span id="orientation">orientation</span>​ $(document).ready(checkOrientation); $(window).resize(checkOrientation); function checkOrientation() { var orientation = "Portrait"; var screenWidth = $(window).width(); var screenHeight = $(window).height(); if (screenWidth > screenHeight) { orientation = "Landscape"; } $("#orientation").html(orientation); }​