HID:requestDevice() 方法
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 元件。
注意: 裝置過濾器用於縮小顯示給使用者的裝置列表。如果沒有提供過濾器,則顯示所有已連線的裝置。當包含一個或多個過濾器時,如果任何過濾器匹配,則包含該裝置。要匹配一個過濾器,必須滿足該過濾器包含的所有規則。
返回值
異常
SecurityErrorDOMException-
如果頁面不允許訪問 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 |
瀏覽器相容性
載入中…