USB: `requestDevice()` Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die requestDevice() Methode des USB Interfaces gibt ein Promise zurück, das mit einer Instanz von USBDevice aufgelöst wird, wenn das angegebene Gerät gefunden wird. Durch das Aufrufen dieser Funktion wird der Kopplungsfluss des Benutzers ausgelöst.

Syntax

js
requestDevice(filters)

Parameter

filters

Ein Array von Filterobjekten für mögliche Geräte, die Sie koppeln möchten. Jedes Filterobjekt kann die folgenden Eigenschaften haben:

  • vendorId
  • productId
  • classCode
  • subclassCode
  • protocolCode
  • serialNumber

Rückgabewert

Ein Promise, das mit einer Instanz von USBDevice aufgelöst wird.

Sicherheit

Vorübergehende Benutzeraktivierung ist erforderlich. Der Benutzer muss mit der Seite oder einem UI-Element interagieren, damit diese Funktion funktioniert.

Beispiele

Das folgende Beispiel sucht nach einem von zwei USB-Geräten. Beachten Sie, dass zwei Produkt-IDs angegeben sind. Beide werden an requestDevice() übergeben. Dies löst einen Benutzer-Agenten-Fluss aus, der den Benutzer auffordert, ein Gerät zur Kopplung auszuwählen. Nur das ausgewählte Gerät wird an then() übergeben.

Die Anzahl der Filter gibt nicht die Anzahl der vom Benutzer-Agenten angezeigten Geräte an. Wenn beispielsweise nur ein USB-Gerät mit der Produkt-ID 0xa800 gefunden wird, wird nur ein Gerät vom Benutzer-Agenten aufgelistet. Wenn der Benutzer-Agent jedoch zwei der zuerst aufgeführten Geräte und eines des zweiten findet, werden alle drei Geräte aufgelistet.

js
const filters = [
  { vendorId: 0x1209, productId: 0xa800 },
  { vendorId: 0x1209, productId: 0xa850 },
];
navigator.usb
  .requestDevice({ filters })
  .then((usbDevice) => {
    console.log(`Product name: ${usbDevice.productName}`);
  })
  .catch((e) => {
    console.error(`There is no device. ${e}`);
  });

Spezifikationen

Specification
WebUSB API
# ref-for-dom-usb-requestdevice④

Browser-Kompatibilität

BCD tables only load in the browser