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 (en-US) (HTTPS), in some or all supporting browsers.

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

Синтаксис

USB.requestDevice([filters])

Параметры

filters

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

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

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

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

Пример

Этот пример запрашивает любое из перечисленных 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