WebHID API

可用性有限

此功能不是基线,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一个 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

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

接口

HID

提供用于连接 HID 设备、列出已连接的 HID 设备以及已连接 HID 设备的事件处理程序的方法。

HIDDevice

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

HIDInputReportEvent

从任何关联的 HID 设备接收输入报告时,将其传递给HIDDevice inputreport 事件。

HIDConnectionEvent

当设备连接或断开连接时,将其传递给HID connectdisconnect 事件。

示例

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

js
const device = await navigator.hid.requestDevice({ filters: [] });
// A popup titled `... wants to connect to a HID Device` with `Cancel` and `Connect` buttons will show up with a device list to select from.
// Select one and click on `Connect` button. Then the device will be an array with the selected device in it.

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

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 disconnected: ${event.device.productName}`);
  console.dir(event);
});
// For example, when my connected keyboard gets disconnected, the log in the console will show:
// HID disconnected: 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"
// }

// The event above is an instance of the HIDConnectionEvent interface.

规范

规范
WebHID API
# dom-hid

浏览器兼容性

BCD 表仅在浏览器中加载