Signatur
Beschreibung
Die Eigenschaft vendorId eines HIDDevice-Objekts enthält die Hersteller-Kennung des Geräts. Bei USB-Geräten ist das die vom USB Implementers Forum vergebene Vendor ID (VID), bei Bluetooth-Geräten die entsprechende Hersteller-ID. Der Wert ist eine vorzeichenlose 16-Bit-Ganzzahl (0–65535) und wird üblicherweise hexadezimal notiert, z. B. 0x046d für Logitech oder 0x057e für Nintendo.
Zusammen mit productId identifiziert vendorId ein Gerätemodell eindeutig. Typische Einsatzfälle sind das Filtern der Geräteauswahl in navigator.hid.requestDevice(), das Wiederfinden bereits freigegebener Geräte über navigator.hid.getDevices() und das Auswählen des passenden Protokoll-Treibers in der eigenen Anwendung.
Die Eigenschaft ist schreibgeschützt und steht direkt nach dem Erhalt des Geräteobjekts zur Verfügung, ein vorheriges open() ist also nicht nötig.
Rückgabewert
0 und 65535 (0xFFFF).Beispiele
Geräteauswahl nach Hersteller filtern
// Muss durch eine Nutzeraktion (z. B. Klick) ausgelöst werden
document.querySelector('#connect').addEventListener('click', async () => {
const [device] = await navigator.hid.requestDevice({
filters: [{ vendorId: 0x057e }] // Nintendo
});
if (!device) return;
console.log(`Gewählt: ${device.productName}, VID 0x${device.vendorId.toString(16).padStart(4, '0')}`);
});
Bereits freigegebene Geräte eines Herstellers wiederfinden
const LOGITECH = 0x046d;
const devices = await navigator.hid.getDevices();
const logitech = devices.filter((d) => d.vendorId === LOGITECH);
for (const d of logitech) {
console.log(d.productName, d.vendorId, d.productId);
}
Treiber anhand von vendorId und productId wählen
const drivers = new Map([
['057e:2006', 'joycon-left'],
['057e:2007', 'joycon-right'],
['054c:09cc', 'dualshock4']
]);
const hex = (n) => n.toString(16).padStart(4, '0');
navigator.hid.addEventListener('connect', ({ device }) => {
const key = `${hex(device.vendorId)}:${hex(device.productId)}`;
console.log(`Verbunden: ${key} → ${drivers.get(key) ?? 'unbekannt'}`);
});
// Wichtig · Fallstricke
- Browserunterstützung: WebHID gibt es nur in Chromium-basierten Desktop-Browsern (Chrome, Edge, Opera ab Version 89). Firefox und Safari unterstützen die API nicht. Vorher mit
'hid' in navigatorprüfen. - Die API steht nur in einem sicheren Kontext (HTTPS oder localhost) zur Verfügung. Die Berechtigungsrichtlinie
hidkann sie in iframes sperren. - Der Wert ist eine Zahl, kein String. Für die übliche Hex-Darstellung
toString(16).padStart(4, '0')verwenden. Beim Vergleich Hex-Literale wie0x046dnutzen, nicht'046d'. - Die Hersteller-ID allein reicht nicht aus, um ein Gerät eindeutig zu identifizieren. Mehrere gleiche Geräte haben dieselbe
vendorId/productId, und eine Seriennummer stellt WebHID nicht bereit. - Manche sicherheitskritischen Geräte (z. B. FIDO-Sicherheitsschlüssel) sperrt der Browser. Sie tauchen unabhängig von der
vendorIdnicht in der Auswahl auf.