WebHID API

Limited availability

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

实验性: 这是一项实验性技术
在将其用于生产之前,请仔细检查浏览器兼容性表格

备注: 此特性在 Web Worker(不包括共享 Web Worker)中可用。

人机接口设备(HID)是一种从人类接收输入或向人类提供输出的设备类型。它也指 HID 协议,这是一种主机与设备之间双向通信的标准,旨在简化安装程序。HID 协议最初是为 USB 设备开发的,但此后已在包括蓝牙在内的许多其他协议上得到实现。

接口

HID

提供用于连接到 HID 设备、列出已连接的 HID 设备以及为已连接的 HID 设备设置事件处理器的方法。

HIDDevice

表示一个 HID 设备。一个物理设备可能由多个 HIDDevice 对象表示。

HIDInputReportEvent

当从任何关联的 HID 设备接收到输入报告时,会传递给 HIDDeviceinputreport 事件。

HIDConnectionEvent

当设备连接或断开时,会传递给 HIDconnectdisconnect 事件。

示例

可以使用 requestDevice() 方法与设备进行连接。在这种情况下,我们将从所有可用设备中进行选择。

js
const device = await navigator.hid.requestDevice({ filters: [] });
// 将弹出一个标题为“……想要连接到 HID 设备”的弹窗,包含“取消”和“连接”按钮,以及一个可供选择的设备列表。
// 选择一个设备并点击“连接”按钮。然后,设备将作为一个包含所选设备的数组返回。

我们还可以检索网站之前已获得访问权限的所有设备,并将设备名称记录到控制台。

js
let devices = await navigator.hid.getDevices();
devices.forEach((device) => {
  console.log(`HID:${device.productName}`);
});

我们可以为任何 HID 设备的断开连接注册事件监听器。

js
navigator.hid.addEventListener("disconnect", (event) => {
  console.log(`HID 断开连接:${event.device.productName}`);
  console.dir(event);
});
// 例如,当我已连接的键盘断开连接时,控制台中的日志将显示:
// HID 断开连接:USB Keyboard
// {
//    bubbles: false
//    cancelBubble: false
//    cancelable: false
//    composed: false
//    currentTarget: HID {onconnect: null, ondisconnect: null}
//    defaultPrevented: false
//    device: HIDDevice {oninputreport: null, opened: false, vendorId: 6700, productId: 11555, productName: "USB Keyboard", …}
//    eventPhase: 0
//    isTrusted: true
//    path: []
//    returnValue: true
//    srcElement: HID {onconnect: null, ondisconnect: null}
//    target: HID {onconnect: null, ondisconnect: null}
//    timeStamp: 18176.600000023842
//    type: "disconnect"
// }

// 上述事件是 HIDConnectionEvent 接口的一个实例。

规范

Specification
WebHID API
# dom-hid

浏览器兼容性

BCD tables only load in the browser