XRSystem: isSessionSupported() 方法

可用性有限

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

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

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

XRSystem 介面的 isSessionSupported() 方法返回一個 Promise,如果使用者裝置支援指定的 WebXR 會話模式,則該 Promise 解析為 true。否則,Promise 解析為 false

如果沒有可用裝置,或者瀏覽器沒有 XR 裝置的使用許可權,則 Promise 會因一個合適的 DOMException 而被拒絕。

語法

js
isSessionSupported(mode)

引數

模式

一個 String,指定要檢查支援的 WebXR 會話模式。可供檢查的模式有:

  • immersive-ar 實驗性
  • immersive-vr
  • inline

返回值

一個 Promise,如果支援指定的會話模式,則解析為 true;否則,Promise 解析為 false

異常

isSessionSupported() 不會丟擲實際的異常,而是拒絕返回的 Promise,並將一個 name 為以下字串之一的 DOMException 傳遞給拒絕處理程式。

SecurityError

此功能的用途被 xr-spatial-tracking 許可權策略 阻止。

示例

在此示例中,我們看到 isSessionSupported() 被用來檢測裝置是否支援 VR 模式,方法是檢查是否支援 immersive-vr 會話。如果支援,我們設定一個按鈕,顯示“進入 XR”,呼叫 onButtonClicked() 方法,並啟用該按鈕。

如果當前沒有會話正在進行,我們請求 VR 會話,如果成功,則在一個名為 onSessionStarted() 的方法(未顯示)中設定會話。如果在點選按鈕時已有會話正在進行,我們呼叫 xrSession 物件的 end() 方法來關閉 WebXR 會話。

js
if (navigator.xr) {
  navigator.xr.isSessionSupported("immersive-vr").then((isSupported) => {
    if (isSupported) {
      userButton.addEventListener("click", onButtonClicked);
      userButton.textContent = "Enter XR";
      userButton.disabled = false;
    }
  });
}

function onButtonClicked() {
  if (!xrSession) {
    navigator.xr.requestSession("immersive-vr").then((session) => {
      xrSession = session;
      // onSessionStarted() not shown for reasons of brevity and clarity.
      onSessionStarted(xrSession);
    });
  } else {
    // Button is a toggle button.
    xrSession.end();
  }
}

規範

規範
WebXR Device API
# dom-xrsystem-issessionsupported

瀏覽器相容性