Start · Sprachen · JavaScript · Referenz · HIDDevice.vendorId

HIDDevice.vendorId

Eigenschaft

Schreibgeschützte Eigenschaft, die die USB- bzw. Bluetooth-Hersteller-ID (Vendor ID) des HID-Geräts als 16-Bit-Zahl liefert.

seit JavaScript Chrome/Edge 89+ (WebHID, nicht in Firefox/Safari) Kategorie: webapi

Signatur

HIDDevice.vendorId

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

Typ
number
Beschreibung
Die Hersteller-ID als Ganzzahl zwischen 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')}`);
});
Gewählt: Joy-Con (L), VID 0x057e

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);
}
G502 HERO Gaming Mouse 1133 49290

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'}`);
});
Verbunden: 054c:09cc → dualshock4

// 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 navigator prüfen.
  • Die API steht nur in einem sicheren Kontext (HTTPS oder localhost) zur Verfügung. Die Berechtigungsrichtlinie hid kann 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 wie 0x046d nutzen, 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 vendorId nicht in der Auswahl auf.