XRSystem: devicechange Ereignis

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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, wann immer sich die Verfügbarkeit von immersiven XR-Geräten geändert hat. Zum Beispiel, wenn ein VR-Headset oder AR-Brillen angeschlossen oder getrennt wurden. Es handelt sich um ein generisches Event ohne zusätzliche Eigenschaften.

Hinweis: Nicht zu verwechseln mit dem MediaDevices devicechange Ereignis.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignishandler-Eigenschaft.

js
addEventListener("devicechange", (event) => {});

ondevicechange = (event) => {};

Wenn die Nutzung von WebXR durch eine xr-spatial-tracking Permissions Policy blockiert wurde, werden devicechange Ereignisse nicht ausgelöst.

Ereignistyp

Ein generisches Event ohne zusätzliche Eigenschaften.

Beschreibung

Auslöser

Ausgelöst, wann immer sich die Verfügbarkeit von immersiven XR-Geräten geändert hat. Zum Beispiel, wenn ein VR-Headset oder AR-Brillen angeschlossen oder getrennt wurden.

Anwendungsfälle

Sie können dieses Ereignis verwenden, um zum Beispiel die Verfügbarkeit eines WebXR-kompatiblen Geräts zu überwachen, damit Sie ein UI-Element aktivieren können, das der Benutzer zur Aktivierung des immersiven Modus verwenden kann. Dies wird im Beispiel unten gezeigt.

Beispiele

Im hier gezeigten Beispiel wird das devicechange Ereignis behandelt, indem die Verfügbarkeit der Schaltfläche "Enter XR" basierend darauf umgeschaltet wird, ob immersive Geräte derzeit verfügbar sind oder nicht.

js
if (navigator.xr) {
  navigator.xr.addEventListener("devicechange", (event) => {
    navigator.xr.isSessionSupported("immersive-vr").then((immersiveOK) => {
      enableXRButton.disabled = !immersiveOK;
    });
  });
}

Wenn devicechange empfangen wird, ruft der in diesem Code eingerichtete Handler die XR Methode isSessionSupported() auf, um herauszufinden, ob ein Gerät verfügbar ist, das immersive VR-Präsentationen handhaben kann. Wenn ja, wird die Schaltfläche zum Betreten des XR-Modus aktiviert; andernfalls wird sie deaktiviert.

Sie können auch die ondevicechange Ereignishandler-Eigenschaft verwenden, um einen einzigen Handler für devicechange Ereignisse festzulegen:

js
if (navigator.xr) {
  navigator.xr.ondevicechange = (event) => {
    // …
  };
}

Spezifikationen

Specification
WebXR Device API
# eventdef-xrsystem-devicechange
WebXR Device API
# dom-xrsystem-ondevicechange

Browser-Kompatibilität