USB: requestDevice() 方法

可用性有限

此功能不是基线,因为它在一些使用最广泛的浏览器中不起作用。

实验性: 这是一个 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

安全上下文: 此功能仅在 安全上下文(HTTPS)中可用,在某些或所有 支持的浏览器 中可用。

requestDevice() 方法是 USB 接口的方法,它返回一个 Promise,如果找到指定的设备,该 Promise 将解析为 USBDevice 的实例。调用此函数将触发用户代理的配对流程。

语法

js
requestDevice(filters)

参数

过滤器

要配对的可能设备的过滤器对象的数组。每个过滤器对象都可以具有以下属性

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

返回值

一个 Promise,它解析为 USBDevice 的实例。

安全性

短暂的用户激活 是必需的。用户必须与页面或 UI 元素交互才能使此功能正常工作。

示例

以下示例查找两个 USB 设备之一。请注意,指定了两个产品 ID。两者都传递给 requestDevice()。这将触发用户代理流程,提示用户选择要配对的设备。只有选定的设备将传递给 then()

过滤器的数量不指定用户代理显示的设备数量。例如,如果只找到产品 ID 为 0xa800 的 USB 设备,那么用户代理只会列出该设备。另一方面,如果用户代理找到两个第一个列出的设备和一个第二个列出的设备,那么所有三个设备都将被列出。

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

规范

规范
WebUSB API
# ref-for-dom-usb-requestdevice④

浏览器兼容性

BCD 表仅在浏览器中加载