The XRSystem
method isSessionSupported()
returns a promise which resolves to true
if the specified WebXR session mode is supported by the user's WebXR device. Otherwise, the promise resolves with false
.
If no devices are available or the browser doesn't have permission to use the XR device, the promise is rejected with an appropriate DOMException
.
A Promise
that resolves to true
if the specified session mode is supported; otherwise the promise resolves to false
.
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.
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.
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(xrSession);
});
} else {
xrSession.end();
}
}