Window: deviceorientation 事件

Baseline 2023
新推出

自 2023 年 9 月起,此功能可在最新的设备和浏览器版本上使用。此功能可能无法在较旧的设备或浏览器上使用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

当设备的方向传感器获取到设备相对于地球坐标系的新方向数据时,deviceorientation 事件会被触发。这些数据是从设备内部的磁力计收集的。

详情请参阅方向和运动数据解说

此事件不可取消,也不会冒泡。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("deviceorientation", (event) => { })

ondeviceorientation = (event) => { }

事件类型

一个 DeviceOrientationEvent。继承自 Event

Event DeviceOrientationEvent

事件属性

DeviceOrientationEvent.absolute 只读

一个布尔值,表示设备提供的方向数据是否是绝对的。

DeviceOrientationEvent.alpha 只读

一个表示设备围绕 Z 轴运动的数值,以度为单位,范围从 0(含)到 360(不含)。

DeviceOrientationEvent.beta 只读

一个表示设备围绕 X 轴运动的数值,以度为单位,范围从 -180(含)到 180(不含)。这表示设备的前后运动。

DeviceOrientationEvent.gamma 只读

一个表示设备围绕 Y 轴运动的数值,以度为单位,范围从 -90(含)到 90(不含)。这表示设备的左右运动。

DeviceOrientationEvent.webkitCompassHeading 非标准 只读

一个数值,表示设备围绕世界坐标系 z 轴的运动与正北方向之间的差异,以度为单位,范围从 0 到 360。

DeviceOrientationEvent.webkitCompassAccuracy 非标准 只读

指南针的精度,以正或负偏差表示。通常为 10。

示例

js
if (window.DeviceOrientationEvent) {
  window.addEventListener(
    "deviceorientation",
    (event) => {
      const rotateDegrees = event.alpha; // alpha: rotation around z-axis
      const leftToRight = event.gamma; // gamma: left to right
      const frontToBack = event.beta; // beta: front back motion

      handleOrientationEvent(frontToBack, leftToRight, rotateDegrees);
    },
    true,
  );
}

function handleOrientationEvent(frontToBack, leftToRight, rotateDegrees) {
  // do something amazing
}

规范

规范
设备方向和运动
# deviceorientation
设备方向和运动
# dom-window-ondeviceorientation

浏览器兼容性

另见