Start · Sprachen · JavaScript · Referenz · VRDisplayCapabilities.hasExternalDisplay

VRDisplayCapabilities.hasExternalDisplay

Eigenschaft

Schreibgeschützter boolescher Wert: <code>true</code>, wenn das VR-Display ein vom primären Bildschirm des Geräts getrenntes, externes Display ist.

seit JavaScript WebVR 1.1 (veraltet, nie Baseline; ersetzt durch W deprecated seit ja Kategorie: webapi

Signatur

VRDisplayCapabilities.hasExternalDisplay

Beschreibung

Die Eigenschaft hasExternalDisplay des Interfaces VRDisplayCapabilities aus der veralteten WebVR-API gibt an, ob das VR-Gerät ein eigenes, externes Display hat. Bei kabelgebundenen Headsets wie Oculus Rift oder HTC Vive ist der Wert true. Bei Lösungen, bei denen der Gerätebildschirm selbst die VR-Anzeige ist (z. B. Smartphone in Cardboard oder Gear VR), ist er false.

Der Wert ist vor allem für die Darstellung auf der Seite wichtig. Hat das Headset ein externes Display, bleibt der normale Monitor frei. Dort kann die Anwendung dann eine Spiegelansicht oder eine eigene 2D-Oberfläche zeigen, etwa Bedienelemente oder eine Zuschauer-Perspektive. Ist der Wert false, übernimmt die VR-Darstellung den ganzen Bildschirm. Dann sollte man keine zusätzliche Benutzeroberfläche neben der Szene einplanen.

Man erreicht die Eigenschaft über VRDisplay.capabilities. Das zugehörige VRDisplay liefert navigator.getVRDisplays(). Die Eigenschaft ist schreibgeschützt und hat keine Parameter.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn das VR-Display vom primären Display des Geräts getrennt ist, sonst false.

Beispiele

Externes Display abfragen

const pruefeDisplay = async () => {
  if (!('getVRDisplays' in navigator)) {
    console.log('WebVR wird nicht unterstützt.');
    return;
  }
  const displays = await navigator.getVRDisplays();
  if (displays.length === 0) {
    console.log('Kein VR-Display gefunden.');
    return;
  }
  const [display] = displays;
  console.log(`${display.displayName}: externes Display = ${display.capabilities.hasExternalDisplay}`);
};

pruefeDisplay();
Oculus Rift CV1: externes Display = true

Spiegelansicht nur bei externem Headset anzeigen

const starteVR = async (canvas) => {
  const [display] = await navigator.getVRDisplays();
  if (!display) return;

  const { hasExternalDisplay, canPresent } = display.capabilities;
  if (!canPresent) return;

  await display.requestPresent([{ source: canvas }]);

  // Bei externem Headset bleibt der Monitor frei: Zuschauer-UI einblenden
  document.querySelector('#spiegel-ui').hidden = !hasExternalDisplay;
};

document.querySelector('#vr-start').addEventListener('click', () => {
  starteVR(document.querySelector('canvas'));
});

Gerätetyp für Statistik ermitteln

const vrGeraeteTyp = (display) =>
  display.capabilities.hasExternalDisplay ? 'Headset (extern)' : 'Mobil/integriert';

navigator.getVRDisplays?.().then((displays) => {
  displays.forEach((d) => console.log(d.displayName, '→', vrGeraeteTyp(d)));
});
Cardboard VR → Mobil/integriert

// Wichtig · Fallstricke

Veraltet: WebVR ist ein veralteter Standard und wurde durch die WebXR Device API ersetzt. Unterstützt wurde WebVR nur in einzelnen Browsern, zum Beispiel in älteren Firefox-Versionen, in Chrome hinter einem Flag sowie in Oculus Browser und Samsung Internet. Die meisten davon haben die Unterstützung inzwischen entfernt. Für neue Projekte sollte man diese API nicht mehr verwenden.

  • Vor dem Zugriff immer prüfen, ob navigator.getVRDisplays existiert.
  • In WebXR gibt es kein direktes Gegenstück. Ob Inhalte zusätzlich auf dem Monitor erscheinen, erkennt man dort am Sitzungsmodus (immersive-vr) und an einer optionalen Spiegelung durch den Browser.
  • Die API steht nur in sicheren Kontexten (HTTPS) zur Verfügung. Je nach Browser kann eine Nutzeraktion nötig sein, etwa für requestPresent().