USB.requestDevice()

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

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, браузер отобразит только одно устройство. Но, если браузер определит два устройства, совпадающих с первым фильтром, и еще одно, совпадающее со вторым, будут показаны все три устройства.

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);
});

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

Спецификация Статус Комментарий
WebUSB
Определение 'requestDevice' в этой спецификации.
Черновик Изначальное определение.

Совместимость

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
requestDevice
Экспериментальная
Chrome Полная поддержка 61Edge Полная поддержка 79Firefox Нет поддержки НетIE Нет поддержки НетOpera Полная поддержка 48Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Полная поддержка 61Firefox Android Нет поддержки НетOpera Android Полная поддержка 45Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 8.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.