Источник: 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:
(0,
0,
0)
Position absolute? false
Acceleration: (0, 0, 0) m/s2
Acceleration including gravity: (0, 0, 0) m/s2
Rotation rate: (0, 0, 0)
Interval: 16 milliseconds