Signatur
Beschreibung
Die Eigenschaft displayName der Schnittstelle VRDisplay aus der veralteten WebVR-API liefert einen Namen, mit dem Menschen das angeschlossene VR-Gerät erkennen können. Typische Werte sind z. B. "Oculus Rift CV1", "OpenVR HMD" oder "Google Cardboard".
Gebraucht wird der Wert vor allem in der Benutzeroberfläche: Sind mehrere Geräte angeschlossen, lässt sich damit eine Auswahlliste bauen, oder man zeigt einfach an, welches Headset gerade benutzt wird. Für die technische Unterscheidung von Geräten ist dagegen VRDisplay.displayId gedacht, weil der Name nicht eindeutig sein muss.
Ein VRDisplay-Objekt bekommt man über navigator.getVRDisplays(). Der Wert von displayName kann nur gelesen werden. Wird ihm etwas zugewiesen, passiert nichts; im Strict Mode wird ein TypeError ausgelöst.
Rückgabewert
Beispiele
Namen des ersten VR-Geräts ausgeben
const zeigeHeadset = 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-Gerät gefunden.');
return;
}
console.log(`Verbundenes Headset: ${displays[0].displayName}`);
};
zeigeHeadset();
Auswahlliste für mehrere Geräte erstellen
const baueGeraeteAuswahl = async (select) => {
const displays = await navigator.getVRDisplays();
for (const display of displays) {
const option = document.createElement('option');
option.value = String(display.displayId); // eindeutige Kennung
option.textContent = display.displayName; // lesbarer Name
select.append(option);
}
return displays;
};
const select = document.querySelector('#vr-geraet');
baueGeraeteAuswahl(select).then((d) => console.log(`${d.length} Gerät(e) gefunden`));
Schreibschutz zeigen
'use strict';
navigator.getVRDisplays().then(([display]) => {
if (!display) return;
try {
display.displayName = 'Mein Headset';
} catch (err) {
console.log(err instanceof TypeError); // Eigenschaft hat nur einen Getter
}
console.log(display.displayName);
});
// Wichtig · Fallstricke
- Veraltet: WebVR wurde nie als Standard verabschiedet und ist durch die WebXR Device API ersetzt. Die meisten aktuellen Browser unterstützen es nicht mehr. Früher war es z. B. in Firefox (Windows), in Chrome nur hinter einem Flag oder in Testversionen, im Samsung Internet und im Oculus Browser verfügbar. Für neue Projekte sollte man
navigator.xrverwenden. WebXR gibt aus Datenschutzgründen keinen Gerätenamen preis. - Nicht eindeutig: Zwei baugleiche Headsets können denselben Namen haben. Zum Unterscheiden daher
displayIdverwenden. - Uneinheitliche Werte: Wie der Name aufgebaut ist, hängt von Browser, Treiber und Laufzeitumgebung ab (z. B. „OpenVR HMD“ statt des Modellnamens). Deshalb keine Programmlogik von einem bestimmten Namen abhängig machen.
- Datenschutz: Der Gerätename kann zum Fingerprinting beitragen. Man sollte ihn nur anzeigen und nicht an Server übertragen.
- Vor dem Zugriff mit
'getVRDisplays' in navigatorprüfen, ob die API überhaupt vorhanden ist.