XRSystem: isSessionSupported() Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die Methode isSessionSupported() des XRSystem gibt ein Versprechen zurück, das auf true aufgelöst wird, wenn der angegebene WebXR-Sitzungs-Modus vom WebXR-Gerät des Benutzers unterstützt wird. Andernfalls wird das Versprechen mit false aufgelöst.

Wenn keine Geräte verfügbar sind oder der Browser keine Berechtigung hat, das XR-Gerät zu verwenden, wird das Versprechen mit einer entsprechenden DOMException abgelehnt.

Syntax

js
isSessionSupported(mode)

Parameter

mode

Ein String, der den WebXR-Sitzungsmodus angibt, für den die Unterstützung überprüft werden soll. Mögliche Modi, die überprüft werden können:

  • immersive-ar Experimentell
  • immersive-vr
  • inline

Rückgabewert

Ein Promise, das auf true aufgelöst wird, wenn der angegebene Sitzungsmodus unterstützt wird; andernfalls wird das Versprechen auf false aufgelöst.

Ausnahmen

Anstatt echte Ausnahmen auszulösen, lehnt isSessionSupported() das zurückgegebene Versprechen ab und übergibt dem Ablehnungs-Handler eine DOMException, deren name einer der folgenden Strings ist.

SecurityError

Die Nutzung dieses Features wird durch eine xr-spatial-tracking Permissions Policy blockiert.

Beispiele

In diesem Beispiel sehen wir, wie isSessionSupported() verwendet wird, um zu erkennen, ob das Gerät den VR-Modus unterstützt, indem überprüft wird, ob eine immersive-vr-Sitzung unterstützt wird. Wenn dies der Fall ist, richten wir eine Schaltfläche ein, die "Enter XR" anzeigt, um eine Methode onButtonClicked() aufzurufen, und aktivieren die Schaltfläche.

Wenn noch keine Sitzung läuft, fordern wir die VR-Sitzung an und richten sie, wenn erfolgreich, in einer Methode namens onSessionStarted() ein, die hier nicht gezeigt wird. Falls bereits eine Sitzung läuft, wenn die Schaltfläche geklickt wird, rufen wir die end()-Methode des xrSession-Objekts auf, um die WebXR-Sitzung zu beenden.

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();
  }
}

Spezifikationen

Specification
WebXR Device API
# dom-xrsystem-issessionsupported

Browser-Kompatibilität

BCD tables only load in the browser