USB: phương thức requestDevice()

Limited availability

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

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

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

Note: This feature is available in Web Workers.

requestDevice() là phương thức của giao diện USB trả về một Promise phân giải thành một thể hiện USBDevice nếu tìm thấy thiết bị được chỉ định. Gọi hàm này sẽ kích hoạt luồng ghép đôi của user agent.

Cú pháp

js
requestDevice(options)

Tham số

options

Một đối tượng thiết lập các tùy chọn để chọn thiết bị phù hợp. Các tùy chọn có sẵn là:

filters

Một mảng các đối tượng lọc cho những thiết bị có thể ghép đôi. Mỗi đối tượng lọc có thể có các thuộc tính sau:

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

Giá trị trả về

Một Promise phân giải thành một thể hiện của USBDevice.

Bảo mật

Kích hoạt tạm thời là bắt buộc. Người dùng phải tương tác với trang hoặc một phần tử giao diện người dùng thì tính năng này mới hoạt động.

Ví dụ

Ví dụ sau tìm một trong hai thiết bị USB. Lưu ý rằng có hai mã sản phẩm được chỉ định. Cả hai đều được truyền vào requestDevice(). Điều này kích hoạt luồng của user agent, nhắc người dùng chọn một thiết bị để ghép đôi. Chỉ thiết bị được chọn mới được truyền vào then().

Số lượng bộ lọc không quyết định số thiết bị mà user agent hiển thị. Ví dụ, nếu chỉ tìm thấy một thiết bị USB có mã sản phẩm 0xa800, thì user agent chỉ liệt kê một thiết bị. Ngược lại, nếu user agent tìm thấy hai thiết bị của mục đầu tiên và một thiết bị của mục thứ hai, thì cả ba thiết bị sẽ được liệt kê.

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

Thông số kỹ thuật

Specification
WebUSB API
# dom-usb-requestdevice

Tương thích trình duyệt