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, bevor Sie diese produktiv verwenden.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Ein devicechange-Ereignis wird an 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-Brille verbunden oder getrennt wurde. 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 legen Sie eine Event-Handler-Eigenschaft fest.

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

Wird ausgelöst, wenn sich die Verfügbarkeit von immersiven XR-Geräten geändert hat. Zum Beispiel, wenn ein VR-Headset oder AR-Brille verbunden oder getrennt wurde.

Anwendungsfälle

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

Beispiele

Das hier gezeigte Beispiel behandelt das devicechange-Ereignis, indem es basierend auf der Verfügbarkeit von immersiven Geräten die Verfügbarkeit der "Enter XR"-Schaltfläche umschaltet.

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 festzustellen, ob ein Gerät verfügbar ist, das immersive VR-Präsentationen handhaben kann. Wenn ja, wird der Button, um den XR-Modus zu betreten, aktiviert; andernfalls wird er deaktiviert.

Sie können auch die ondevicechange-Event-Handler-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

BCD tables only load in the browser