MDN Web Docs

Syntax

js

isSessionSupported(mode)

Parameters

mode

A String specifying the WebXR session mode for which support is to be checked. Possible modes to check for:

  • immersive-ar
  • immersive-vr
  • inline

Return value

A Promise that resolves to true if the specified session mode is supported; otherwise the promise resolves to false.

Exceptions

Rather than throwing true exceptions, isSessionSupported() rejects the returned promise, passing to the rejection handler a DOMException whose name is one of the following strings.

SecurityError

Use of this feature is blocked by an xr-spatial-tracking Permissions Policy.

Examples

In this example, we see isSessionSupported() used to detect whether or not the device supports VR mode by checking to see if an immersive-vr session is supported. If it is, we set up a button to read "Enter XR", to call a method onButtonClicked(), and enable the button.

If no session is already underway, we request the VR session and, if successful, set up the session in a method called onSessionStarted(), not shown. If a session is already underway when the button is clicked, we call the xrSession object's end() method to shut down the WebXR session.

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

Specifications

Specification
WebXR Device API
# dom-xrsystem-issessionsupported

Browser compatibility

Help improve MDN

Yes No

Learn how to contribute

This page was last modified on by MDN contributors.

Read the original on developer.mozilla.org ↗