USB.requestDevice()

Limited availability

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

Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Метод requestDevice() интерфейса USB возвращает Promise, возвращающий экземпляр USBDevice, если необходимое устройство было найдено. Вызов этого метода начинает процесс соединения браузера с устройством.

Синтаксис

USB.requestDevice([filters])

Параметры

filters

Массив объектов, определяющих фильтры для устройств, к которым требуется подключиться. Каждый фильтр может содержать следующие свойства:

  • vendorId - ИД производителя (USB VID)
  • productId - ИД устройства USB PID
  • classCode - код класса функциональности устройства
  • subclassCode - код подкласса
  • protocolCode - код протокола
  • serialNumber - серийный номер

Возвращаемое значение

Promise, возвращающий экземпляр USBDevice.

Пример

Этот пример запрашивает любое из перечисленных USB-устройств. Обратите внимание, указаны два разных PID. Оба присутствуют в списке фильтров для requestDevice(). При этом браузер покажет окно для выбора и подтверждения доступа к устройству. Только выбранное пользователем устройство будет передано в then().

Количество фильтров не определяет количество устройств, показываемых браузером. Например, если найдено только USB-устройство с product ID 0xa800, браузер отобразит только одно устройство. Но, если браузер определит два устройства, совпадающих с первым фильтром, и ещё одно, совпадающее со вторым, будут показаны все три устройства.

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

Спецификации

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

Совместимость с браузерами

BCD tables only load in the browser