XRSystem: devicechange-Ereignis
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Ein devicechange-Ereignis wird auf einem XRSystem-Objekt ausgelöst, wenn sich die Verfügbarkeit immersiver XR-Geräte ändert – beispielsweise, wenn ein VR-Headset oder eine AR-Brille verbunden oder getrennt wird. Es handelt sich um ein generisches Event ohne zusätzliche Eigenschaften.
Hinweis:
Nicht zu verwechseln mit dem devicechange-Ereignis von MediaDevices.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("devicechange", (event) => { })
Alternativ können Sie der Event-Handler-Eigenschaft der Schnittstelle einen Handler zuweisen:
ondevicechange = (event) => { }
Wenn die Verwendung von WebXR durch eine xr-spatial-tracking-Permissions Policy blockiert wurde, werden keine devicechange-Ereignisse ausgelöst.
Ereignistyp
Ein generisches Event ohne zusätzliche Eigenschaften.
Beschreibung
>Auslöser
Das Ereignis wird ausgelöst, wenn sich die Verfügbarkeit immersiver XR-Geräte ändert – beispielsweise, wenn ein VR-Headset oder eine AR-Brille verbunden oder getrennt wird.
Anwendungsfälle
Mit diesem Ereignis können Sie beispielsweise überwachen, ob ein WebXR-kompatibles Gerät verfügbar ist. So können Sie ein UI-Element aktivieren, mit dem Benutzer den immersiven Modus starten können. Das Beispiel unten zeigt, wie das funktioniert.
Beispiele
Das folgende Beispiel verarbeitet das devicechange-Ereignis, indem es die Verfügbarkeit der Schaltfläche „Enter XR“ davon abhängig macht, ob derzeit immersive Geräte verfügbar sind.
if (navigator.xr) {
navigator.xr.addEventListener("devicechange", (event) => {
navigator.xr.isSessionSupported("immersive-vr").then((immersiveOK) => {
enableXRButton.disabled = !immersiveOK;
});
});
}
Wenn ein devicechange-Ereignis eintritt, ruft der hier eingerichtete Handler die XR-Methode isSessionSupported() auf, um zu prüfen, ob ein Gerät verfügbar ist, das immersive VR-Darstellungen unterstützt. Falls ja, wird die Schaltfläche zum Starten des XR-Modus aktiviert; andernfalls wird sie deaktiviert.
Sie können auch über die Event-Handler-Eigenschaft ondevicechange einen einzelnen Handler für devicechange-Ereignisse festlegen. Beachten Sie jedoch, dass dadurch gegebenenfalls andere über ondevicechange hinzugefügte Ereignis-Listener ersetzt werden:
if (navigator.xr) {
navigator.xr.ondevicechange = (event) => {
// …
};
}
Spezifikationen
| Spezifikation |
|---|
| WebXR Device API> # eventdef-xrsystem-devicechange> |
| WebXR Device API> # dom-xrsystem-ondevicechange> |