XRSystem: isSessionSupported() メソッド
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
XRSystem
の isSessionSupported()
メソッドは、指定した WebXR セッションモードがユーザーの WebXR 端末で対応している場合は true
に解決するプロミスを返します。そうでない場合、プロミスは false
に解決されます。
利用できる端末がないか、ブラウザーに XR 端末を使用する権限がない場合、プロミスは適切な DOMException
で拒否されます。
構文
isSessionSupported(mode)
引数
返値
プロミス (Promise
) で、指定したセッションモードを対応している場合は true
に解決し、そうでない場合は false
に解決します。
例外
isSessionSupported()
は実際の例外を発生させるのではなく、DOMException
という名前の文字列をハンドラーに渡して、返されたプロミスを拒否します。
SecurityError
-
この機能の使用が
xr-spatial-tracking
権限ポリシーによってブロックされています。
例
この例では、 isSessionSupported()
を使用して、 immersive-vr
セッションに対応しているかどうかを調べることで、端末が VR モードに対応しているかどうかを検出しています。もし対応していれば、 "Enter XR" というボタンを設定し、 onButtonClicked()
というメソッドを呼び出してボタンを有効にします。
まだセッションが開始されていない場合は、VRセッションをリクエストし、成功した場合は onSessionStarted()
と呼ばれるメソッドでセッションを設定します。ボタンがクリックされたときにセッションが既に進行中であれば、 xrSession
オブジェクトの end()
メソッドを呼び出して WebXR セッションをシャットダウンします。
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() は、簡潔かつ明瞭にするために示しません。
onSessionStarted(xrSession);
});
} else {
// ボタンはトグルボタンです。
xrSession.end();
}
}
仕様書
Specification |
---|
WebXR Device API # dom-xrsystem-issessionsupported |
ブラウザーの互換性
BCD tables only load in the browser