XRSystem: devicechange 事件
devicechange
事件在 XRSystem
对象上触发,每当沉浸式 XR 设备的可用性发生变化时都会触发;例如,当 VR 头戴式设备或 AR 眼镜连接或断开连接时。它是一个通用 Event
,没有添加任何属性。
注意: 不要与 MediaDevices
devicechange
事件混淆。
语法
在诸如 addEventListener()
之类的方 法中使用事件名称,或者设置一个事件处理程序属性。
js
addEventListener("devicechange", (event) => {});
ondevicechange = (event) => {};
如果 WebXR 的使用被 xr-spatial-tracking
权限策略 阻止,则不会触发 devicechange
事件。
事件类型
一个通用的 Event
,没有添加任何属性。
描述
触发
每当沉浸式 XR 设备的可用性发生变化时触发。例如,当 VR 头戴式设备或 AR 眼镜连接或断开连接时。
用例
例如,您可以使用此事件来监控 WebXR 兼容设备的可用性,以便您可以启用用户可以使用来激活沉浸式模式的 UI 元素。这在下面的 示例 中显示。
示例
此处显示的示例通过根据当前是否有任何沉浸式设备可用来切换“进入 XR”按钮的可用性来处理 devicechange
事件。
js
if (navigator.xr) {
navigator.xr.addEventListener("devicechange", (event) => {
navigator.xr.isSessionSupported("immersive-vr").then((immersiveOK) => {
enableXRButton.disabled = !immersiveOK;
});
});
}
当收到 devicechange
时,此代码中设置的处理程序将调用 XR
方法 isSessionSupported()
来确定是否有可处理沉浸式 VR 演示的设备可用。如果有,则进入 XR 模式 的按钮将被启用;否则将被禁用。
您也可以使用 ondevicechange
事件处理程序属性来为 devicechange
事件设置一个单独的处理程序
js
if (navigator.xr) {
navigator.xr.ondevicechange = (event) => {
// …
};
}
规范
规范 |
---|
WebXR 设备 API # eventdef-xrsystem-devicechange |
WebXR 设备 API # dom-xrsystem-ondevicechange |
浏览器兼容性
BCD 表仅在浏览器中加载