HID:requestDevice() 方法
requestDevice()
方法是 HID
接口的一种方法,它请求访问 HID 设备。
用户代理将显示一个权限对话框,其中包含连接设备的列表,并要求用户选择并授予对其中一个设备的权限。
语法
js
requestDevice(options)
参数
options
-
一个对象,包含一个过滤器对象数组,用于与可能的设备配对。每个过滤器对象都可以具有以下属性
注意:设备过滤器用于缩小向用户显示的设备列表。如果不存在过滤器,则将显示所有连接的设备。当包含一个或多个过滤器时,如果任何过滤器匹配,则设备将被包含在内。要匹配过滤器,必须匹配该过滤器中包含的所有规则。
返回值
异常
SecurityError
DOMException
-
如果页面不允许访问 HID 功能,则抛出该异常。
安全性
需要短暂的用户激活。用户必须与页面或 UI 元素进行交互,才能使此功能正常工作。
示例
使用所有四个过滤器规则匹配设备
在以下示例中,请求一个 vendor ID 为 0xABCD
、product ID 为 0x1234
、用途页为 0x0C
、用途 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 |
浏览器兼容性
BCD 表仅在浏览器中加载