Источник: An Introduction to the Device Orientation API - Tuts+ Code Tutorial
Современные браузеры поддерживают определение ориентации. В это число входят Chrome 7+, Firefox 6+, Opera 15+ и Internet Explorer 11. Также поддерживаются в мобильных браузерах BlackBerry 10, Opera Mobile 12+, Mobile Safari 4.2+ и Chrome 3+ на Android. На данный момент Device Orientation API не является стандартом, а носит экспериментальный характер.
Имеются три основных события у объекта window:
Событие deviceorientation возникает, когда акселерометр обнаруживает изменение ориентации устройства. Мы можем получить аргументы типа DeviceOrientationEvent:
Направление осей показано на рисунке.
Событие devicemotion возникает каждый раз, когда устройство испытывает перегрузку - ускорение, вращение. Мы можем получить аргументы типа DeviceMotionEvent:
Событие compassneedscalibration возникает, когда браузер обнаруживает, что компас нуждается в калибровке.
Для проверки поддержки первых двух событий используйте следующий код.
if (window.DeviceOrientationEvent) {
// We can listen for change in the device's orientation...
} else {
// Not supported
}
if (window.DeviceMotionEvent) {
// We can listen for change in the device's orientation...
} else {
// Not supported
}
Для проверки события compassneedscalibration:
if (!('oncompassneedscalibration' in window)) {
// Event supported
} else {
// Event not supported
}
Пример следует проверять на мобильном устройстве. Например, на смартфонах под управлением Android
На мобильном устройстве вы сможете увидеть прозрачный куб с цифрами на гранях, который будет вращаться в зависимости от ориентации устройства.
Coordinates:
(null,
null,
null)
Position absolute? unavailable
Acceleration: (null, null, null) m/s2
Acceleration including gravity: (null, null, null) m/s2
Rotation rate: (null, null, null)
Interval: 0 milliseconds