HID:requestDevice() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

HID 介面的 requestDevice() 方法用於請求訪問 HID 裝置。

使用者代理將呈現一個許可權對話方塊,其中包含一個已連線裝置列表,並要求使用者選擇其中一個裝置並授予訪問許可權。

語法

js
requestDevice(options)

引數

options

包含一個物件,該物件包含一個用於可能配對的裝置的過濾器物件陣列。每個過濾器物件都可以包含以下屬性:

vendorId 可選

一個整數,表示所請求 HID 裝置的 vendorId

productId 可選

一個整數,表示所請求 HID 裝置的 productId。

usagePage 可選

一個整數,表示所請求裝置 HID 用途的 usage page 元件。頂層集合的用途用於識別裝置型別。

可以在 HID Usage Tables 文件中找到標準的 HID 用途值。

usage 可選

一個整數,表示所請求裝置 HID 用途的 usage ID 元件。

注意: 裝置過濾器用於縮小顯示給使用者的裝置列表。如果沒有提供過濾器,則顯示所有已連線的裝置。當包含一個或多個過濾器時,如果任何過濾器匹配,則包含該裝置。要匹配一個過濾器,必須滿足該過濾器包含的所有規則。

返回值

一個 Promise,它將解析為與傳入過濾器匹配的已連線 HIDDevice 物件陣列。

異常

SecurityError DOMException

如果頁面不允許訪問 HID 功能,則丟擲此異常。

安全

需要瞬時使用者啟用。使用者必須與頁面或 UI 元素進行互動才能使此功能正常工作。

示例

使用所有四個過濾器規則匹配裝置

以下示例請求一個 vendor ID 為 0xABCD、product ID 為 0x1234、usage page 為 0x0C、usage ID 為 0x01 的 HID 裝置。只有匹配所有這些規則的裝置才會被顯示。

js
let requestButton = document.getElementById("request-hid-device");
requestButton.addEventListener("click", async () => {
  let device;
  try {
    const devices = await navigator.hid.requestDevice({
      filters: [
        {
          vendorId: 0xabcd,
          productId: 0x1234,
          usagePage: 0x0c,
          usage: 0x01,
        },
      ],
    });
    device = devices[0];
  } catch (error) {
    console.log("An error occurred.");
  }

  if (!device) {
    console.log("No device was selected.");
  } else {
    console.log(`HID: ${device.productName}`);
  }
});

包含兩個過濾器的示例

下一個示例包含兩個過濾器。如果裝置匹配這兩個過濾器中的任何一個,它們將被顯示。

js
// Filter on devices with the Nintendo Switch Joy-Con USB Vendor/Product IDs.
const filters = [
  {
    vendorId: 0x057e, // Nintendo Co., Ltd
    productId: 0x2006, // Joy-Con Left
  },
  {
    vendorId: 0x057e, // Nintendo Co., Ltd
    productId: 0x2007, // Joy-Con Right
  },
];

// Prompt user to select a Joy-Con device.
const [device] = await navigator.hid.requestDevice({ filters });

規範

規範
WebHID API
# dom-hid-requestdevice

瀏覽器相容性