XRSystem: isSessionSupported() 方法
XRSystem 接口的 isSessionSupported() 方法返回一个 Promise,如果用户设备支持指定的 WebXR 会话模式,则该 Promise 解析为 true。否则,Promise 解析为 false。
如果没有可用设备,或者浏览器没有 XR 设备的使用权限,则 Promise 会因一个合适的 DOMException 而被拒绝。
语法
js
isSessionSupported(mode)
参数
返回值
一个 Promise,如果支持指定的会话模式,则解析为 true;否则,Promise 解析为 false。
异常
isSessionSupported() 不会抛出实际的异常,而是拒绝返回的 Promise,并将一个 name 为以下字符串之一的 DOMException 传递给拒绝处理程序。
SecurityError-
此功能的用途被
xr-spatial-tracking权限策略 阻止。
示例
在此示例中,我们看到 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 Device API # dom-xrsystem-issessionsupported |
浏览器兼容性
加载中…