Start · Sprachen · JavaScript · Referenz · VRDisplay.isConnected

VRDisplay.isConnected

Eigenschaft

Schreibgeschützte Eigenschaft, die mit einem <code>boolean</code> angibt, ob das <code>VRDisplay</code> (VR-Headset) aktuell mit dem Computer verbunden ist.

seit JavaScript Veraltet (WebVR 1.1) – nie Baseline, durch WebXR e deprecated seit ja Kategorie: webapi

Signatur

VRDisplay.isConnected

Beschreibung

Die Eigenschaft isConnected des VRDisplay-Interfaces aus der veralteten WebVR-API liefert true, wenn das VR-Gerät physisch bzw. logisch mit dem System verbunden ist, und false, wenn die Verbindung getrennt wurde. Die Eigenschaft ist schreibgeschützt.

Nützlich ist sie vor allem, bevor man eine Präsentation mit VRDisplay.requestPresent() startet oder wenn man in der Render-Schleife sicherstellen will, dass das Headset nicht zwischenzeitlich abgezogen wurde. Ein VRDisplay-Objekt kann nämlich weiterexistieren, auch wenn das Gerät nicht mehr verfügbar ist – etwa wenn man eine Referenz aus navigator.getVRDisplays() zwischengespeichert hat.

Statt den Wert regelmäßig abzufragen, empfiehlt es sich, zusätzlich auf die Window-Events vrdisplayconnect und vrdisplaydisconnect zu reagieren. isConnected eignet sich dann als schnelle Plausibilitätsprüfung zum aktuellen Zeitpunkt.

Achtung: WebVR wurde nie standardisiert und ist durch die WebXR Device API abgelöst. Für neue Projekte sollte navigator.xr verwendet werden.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn das VR-Display verbunden ist, sonst false.

Beispiele

Verbindungsstatus aller VR-Displays ausgeben

const checkDisplays = async () => {
  if (!navigator.getVRDisplays) {
    console.log('WebVR wird nicht unterstützt.');
    return;
  }
  const displays = await navigator.getVRDisplays();
  for (const display of displays) {
    console.log(`${display.displayName}: ${display.isConnected ? 'verbunden' : 'getrennt'}`);
  }
};

checkDisplays();
Oculus Rift CV1: verbunden

Nur bei verbundenem Headset die Präsentation starten

const startVR = async (canvas) => {
  const [display] = await navigator.getVRDisplays();
  if (!display || !display.isConnected) {
    console.warn('Kein verbundenes VR-Headset gefunden.');
    return;
  }
  // requestPresent muss aus einer Benutzeraktion heraus aufgerufen werden
  await display.requestPresent([{ source: canvas }]);
  console.log('VR-Präsentation gestartet');
};

document.querySelector('#enter-vr')
  .addEventListener('click', () => startVR(document.querySelector('canvas')));
VR-Präsentation gestartet

Render-Schleife bei getrenntem Gerät beenden

const renderLoop = (display, drawFrame) => {
  const frame = () => {
    if (!display.isConnected) {
      console.log('Headset getrennt – Rendering gestoppt.');
      return;
    }
    drawFrame();
    display.submitFrame();
    display.requestAnimationFrame(frame);
  };
  display.requestAnimationFrame(frame);
};

window.addEventListener('vrdisplaydisconnect', (event) => {
  console.log(`Getrennt: ${event.display.displayName}`);
});
Headset getrennt – Rendering gestoppt.

// Wichtig · Fallstricke

  • Veraltet: Die WebVR-API ist deprecated und wurde aus den meisten Browsern entfernt (Chrome nur hinter Flags/Origin Trial, Firefox bis Version 98 teilweise). Verwende stattdessen die WebXR Device API (navigator.xr.requestSession()).
  • Immer per Feature-Erkennung ('getVRDisplays' in navigator) prüfen, bevor auf VRDisplay zugegriffen wird.
  • Nicht zu verwechseln mit Node.isConnected aus dem DOM, das angibt, ob ein Knoten im Dokument hängt.
  • Eine zwischengespeicherte VRDisplay-Referenz kann veraltet sein – den Wert vor kritischen Aktionen erneut prüfen und die Events vrdisplayconnect/vrdisplaydisconnect nutzen.
  • Viele WebVR-Funktionen erfordern einen sicheren Kontext (HTTPS).