visibilityState property of the
XRSession interface is a string indicating whether the WebXR content is
currently visible to the user, and if it is, whether it's the primary focus.
visibilityState = xrSession.visibilityState;
A string indicating whether or not the XR content is visible to the user and if it is, whether or not it's currently the primary focus.
The possible values of
- The virtual scene generated by the
XRSessionis not currently visible to the user, so its
requestAnimationFrame()callbacks are not being executed until the
visibilityStatechanges. Input controllers are not being handled for the session.
- The virtual scene rendered by the
XRSessionis currently visible to the user and is the primary focus of the user's attention. To that end, the session's
requestAnimationFrame()callbacks are being processed at the XR device's native refresh rate and input controllers are being processed as normal.
- While the virtual scene rendered by the
XRSessionmay currently be visible to the user, it is not the user's primary focus at the moment; it's also possible the session is not currently visible at all. In order to optimize resource utilization, the user agent may be handling the session's
requestAnimationFrame()callbacks at a throttled rate. Input controllers are not being processed for the session.
It's important to keep in mind that because an immersive WebXR session is potentially
being shown using a different display than the HTML document in which it's running (such
as when being shown on a headset), the value of a
visibilityState may not necessarily be the same as the owning
visibilityState. For instance, if the viewer is using a headset tethered to a
computer and the immersive scene is obscured by a configuration UI, the user could peek
out from behind the headset and still be able to see the document itself on their
|WebXR Device API |
BCD tables only load in the browser