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 |
浏览器兼容性
加载中…