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() von XRSystem gibt ein Promise zurück, das zu true aufgelöst wird, wenn der angegebene WebXR-Sessionmodus vom WebXR-Gerät des Benutzers unterstützt wird. Andernfalls wird das Promise mit false aufgelöst.

Wenn keine Geräte verfügbar sind oder der Browser keine Berechtigung zur Nutzung des XR-Geräts hat, wird das Promise mit einer entsprechenden DOMException abgelehnt.

Syntax

js
isSessionSupported(mode)

Parameter

mode

Ein String, der den WebXR-Sessionmodus 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 zu true aufgelöst wird, wenn der angegebene Sessionmodus unterstützt wird; andernfalls wird das Promise zu false aufgelöst.

Ausnahmen

Anstatt echte Ausnahmen zu werfen, lehnt isSessionSupported() das zurückgegebene Promise ab und übergibt dem Rückruf für die Ablehnung eine DOMException, deren name einer der folgenden Strings ist.

SecurityError

Die Nutzung dieser Funktion wird durch eine xr-spatial-tracking Permissions Policy blockiert.

Beispiele

In diesem Beispiel wird isSessionSupported() verwendet, um zu erkennen, ob das Gerät den VR-Modus unterstützt, indem geprüft wird, ob eine immersive-vr-Session unterstützt wird. Wenn ja, richten wir einen Button ein, der "Enter XR" liest, eine Methode onButtonClicked() aufruft und den Button aktiviert.

Wenn keine Session bereits läuft, fordern wir die VR-Session an und richten sie bei Erfolg in einer Methode namens onSessionStarted() ein, die hier nicht gezeigt wird. Wenn bereits eine Session läuft, wenn der Button geklickt wird, rufen wir die Methode end() des xrSession-Objekts auf, um die WebXR-Session 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