JavaScript событие поворота устройства iOS и Android
При повороте устройства браузер отсылает событие orientationchange
. Это актуально для обеих операционных систем. Но подписка на это событие может осуществляться по разному. При проверке на разных устройствах iPhone, iPad и Samsung GT (Android), выяснилось что в iOS срабатывает следующий вариант установки обработчика:
window.onorientationchange = handler;
А для Android подписка осуществляется иначе:
window.addEventListener( 'orientationchange', handler, false );
Примечание: В обоих примерах handler
- функция-обработчик
Текущую ориентацию экрана можно узнать проверкой свойства window.orientation
, принимающего одно из следующих значений:
- 0 — нормальная портретная ориентация
- -90 — альбомная при повороте по часовой стрелке
- 90 — альбомная при повороте против часовой стрелки
- 180 — перевёрнутая портретная ориентация (пока только для iPad)
Для iOS 4.2 и выше есть более широкие возможности по отслеживанию точных углов наклона устройства в трёхмерном пространстве, а также некоторые другие плюшки гироскопа и акселерометра. Если интересно: документация на сайте Apple по событиям DeviceOrientationEvent и DeviceMotionEvent, статья на Хабрахабр.