Signatur
Beschreibung
Die schreibgeschützte Eigenschaft displayId der veralteten WebVR-Schnittstelle VRDisplay liefert eine Ganzzahl, die dieses VR-Anzeigegerät eindeutig bezeichnet. Solange das Gerät verbunden bleibt, ändert sich der Wert nicht.
Vor allem dient sie als Verbindung zur Gamepad API: Gehört ein Controller zu einem bestimmten Headset (etwa die Handcontroller einer HTC Vive oder Oculus Rift), dann hat seine Eigenschaft Gamepad.displayId denselben Wert wie VRDisplay.displayId. So lassen sich Controller und Headset einander zuordnen, wenn mehrere Geräte angeschlossen sind.
Außerdem eignet sich displayId als Schlüssel, um Anzeigen in einer Map zu verwalten oder in vrdisplayconnect- und vrdisplaydisconnect-Ereignissen wiederzuerkennen.
Wichtig: WebVR ist veraltet und aus fast allen Browsern entfernt worden. Für neue Projekte ist die WebXR Device API gedacht, in der es keine vergleichbare displayId gibt. Dort gehören Eingabegeräte über XRSession.inputSources direkt zur Sitzung.
Rückgabewert
unsigned long), die das VRDisplay eindeutig bezeichnet. Der Wert ist schreibgeschützt.Beispiele
displayId aller angeschlossenen VR-Displays ausgeben
if ('getVRDisplays' in navigator) {
const displays = await navigator.getVRDisplays();
for (const display of displays) {
console.log(`${display.displayName}: ID ${display.displayId}`);
}
} else {
console.log('WebVR wird nicht unterstützt – bitte WebXR verwenden.');
}
Controller dem passenden Headset zuordnen
const findControllersFor = (display) =>
[...navigator.getGamepads()]
.filter((pad) => pad && pad.displayId === display.displayId);
const [display] = await navigator.getVRDisplays();
if (display) {
const controllers = findControllersFor(display);
console.log(`${controllers.length} Controller gehören zu ${display.displayName}`);
controllers.forEach((pad) => console.log(pad.id, pad.hand));
}
Displays per displayId in einer Map verwalten
const activeDisplays = new Map();
window.addEventListener('vrdisplayconnect', (event) => {
const { display } = event;
activeDisplays.set(display.displayId, display);
console.log('Verbunden:', display.displayId);
});
window.addEventListener('vrdisplaydisconnect', (event) => {
activeDisplays.delete(event.display.displayId);
console.log('Getrennt:', event.display.displayId, '– verbleibend:', activeDisplays.size);
});
// Wichtig · Fallstricke
- Veraltet: WebVR und damit
VRDisplay.displayIdwerden nicht mehr gepflegt. Nur alte Firefox-Versionen, Chrome mit Flag bzw. in Origin Trials und Samsung Internet haben es je unterstützt. Aktuelle Browser haben die API entfernt. Frage die Unterstützung immer ab, z. B. mit'getVRDisplays' in navigator, und nutze für neue Projekte WebXR. - Den genauen Zahlenwert legt der Browser fest und er ist nicht über Sitzungen oder Seitenaufrufe hinweg stabil. Speichere ihn daher nicht dauerhaft, etwa in
localStorage. - Ein
Gamepad, das zu keinem VR-Display gehört, hat alsdisplayIdden Wert0. Prüfe beim Zuordnen deshalb auf Gleichheit mit der Display-ID und nicht nur darauf, ob der Wert „wahr“ ist. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird still ignoriert bzw. wirft im Strict Mode einen
TypeError. - Die WebVR-API steht nur in sicheren Kontexten (HTTPS) zur Verfügung.