XRSystem: isSessionSupported() 方法
XRSystem
方法 isSessionSupported()
返回一个 promise,如果用户指定的 WebXR 会话模式被用户的 WebXR 设备支持,则该 promise 解析为 true
。否则,该 promise 解析为 false
。
如果没有可用的设备或浏览器没有权限使用 XR 设备,则该 promise 将被拒绝,并传入一个适当的 DOMException
。
语法
js
isSessionSupported(mode)
参数
返回值
一个 Promise
,如果指定会话模式受支持,则解析为 true
;否则解析为 false
。
异常
isSessionSupported()
不会抛出真正的异常,而是会拒绝返回的 promise,并将一个 DOMException
传递给拒绝处理程序,其 name
为以下字符串之一。
SecurityError
-
此功能的使用被
xr-spatial-tracking
Permissions Policy 阻止。
示例
在这个例子中,我们看到 isSessionSupported()
用于检测设备是否支持 VR 模式,通过检查是否支持 immersive-vr
会话。如果支持,我们将设置一个按钮,按钮文本为 "进入 XR",点击按钮将调用 onButtonClicked()
方法,并启用按钮。
如果没有正在进行的会话,我们将请求 VR 会话,如果成功,将在 onSessionStarted()
方法中设置会话(未显示)。如果在点击按钮时已经有会话正在进行,我们将调用 xrSession
对象的 end()
方法来关闭 WebXR 会话。
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();
}
}
规范
规范 |
---|
WebXR 设备 API # dom-xrsystem-issessionsupported |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。