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, wenn 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 Event-Handler-Eigenschaft.

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

ondevicechange = (event) => { }

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

Ereignistyp

Ein generisches Event ohne zusätzliche Eigenschaften.

Beschreibung

Auslöser

Wird ausgelöst, wenn sich die Verfügbarkeit von immersiven XR-Geräten ändert. Beispielsweise, wenn ein VR-Headset oder AR-Brillen angeschlossen oder getrennt werden.

Anwendungsfälle

Sie können dieses Ereignis nutzen, um beispielsweise die Verfügbarkeit eines mit WebXR kompatiblen Geräts zu überwachen, damit Sie ein UI-Element aktivieren können, mit dem der Benutzer den immersiven Modus aktivieren kann. Dies wird im Beispiel unten gezeigt.

Beispiele

Das hier gezeigte Beispiel behandelt das devicechange Ereignis, indem es die Verfügbarkeit der "Enter XR"-Schaltfläche basierend darauf umschaltet, ob momentan immersive Geräte 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 verarbeiten kann. Wenn ja, wird die Schaltfläche zum Betreten des XR-Modus aktiviert; andernfalls wird sie deaktiviert.

Sie können auch die ondevicechange Event-Handler-Eigenschaft verwenden, um einen einzelnen 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