XRSystem: devicechange 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

XRSystem 物件的沉浸式 XR 裝置可用性發生變化時,會在此物件上觸發 devicechange 事件;例如,VR 頭顯或 AR 眼鏡已連線或斷開連線。這是一個通用的 Event,沒有額外的屬性。

注意: 不要與 MediaDevicesdevicechange 事件混淆。

語法

在諸如 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

瀏覽器相容性