Signatur
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
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();
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)));
});
// 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.getVRDisplaysexistiert. - 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().