XRSystem: isSessionSupported() メソッド

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

XRSystemisSessionSupported() メソッドは、指定した WebXR セッションモードがユーザーの WebXR 端末で対応している場合は true に解決するプロミスを返します。そうでない場合、プロミスは false に解決されます。

利用できる端末がないか、ブラウザーに XR 端末を使用する権限がない場合、プロミスは適切な DOMException で拒否されます。

構文

js
isSessionSupported(mode)

引数

mode

文字列 (String) で、対応を調べる WebXR セッションモードを指定します。調べる可能なモード:

  • immersive-ar Experimental
  • immersive-vr
  • inline

返値

プロミス (Promise) で、指定したセッションモードを対応している場合は true に解決し、そうでない場合は false に解決します。

例外

isSessionSupported() は実際の例外を発生させるのではなく、DOMException という名前の文字列をハンドラーに渡して、返されたプロミスを拒否します。

SecurityError

この機能の使用が xr-spatial-tracking 権限ポリシーによってブロックされています。

この例では、 isSessionSupported() を使用して、 immersive-vr セッションに対応しているかどうかを調べることで、端末が VR モードに対応しているかどうかを検出しています。もし対応していれば、 "Enter 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() は、簡潔かつ明瞭にするために示しません。
      onSessionStarted(xrSession);
    });
  } else {
    // ボタンはトグルボタンです。
    xrSession.end();
  }
}

仕様書

Specification
WebXR Device API
# dom-xrsystem-issessionsupported

ブラウザーの互換性

BCD tables only load in the browser