XRSystem: devicechange 事件
當 XRSystem 物件的沉浸式 XR 裝置可用性發生變化時,會在此物件上觸發 devicechange 事件;例如,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 Device API # eventdef-xrsystem-devicechange |
| WebXR Device API # dom-xrsystem-ondevicechange |
瀏覽器相容性
載入中…