跳转到内容

WebHID API 浏览器支持

发布于

WebHID API — WebHID API 允许网页应用通过 navigator.hid.requestDevice() 请求访问非标准的 人机接口设备(HID),并与其交换输入、输出和特性报文。

  • 图例
  • 支持
  • 部分支持
  • 需开启标志
  • 不支持
  • 未知
浏览器 / 平台支持版本置信度来源备注
Chrome (Desktop)支持89高来源—
Chrome (Android)不支持—高来源1
Edge (Desktop)支持89高来源2
Firefox (Desktop)不支持—高来源3
Firefox (Android)不支持—高来源45
Safari (macOS)不支持—高来源6
Safari (iOS)不支持—高来源78
Samsung Internet不支持—高来源910
WebView (Android)不支持—高来源1112
  1. browser-compat-data 未记录 Chrome Android 的支持。
  2. 由 browser-compat-data 镜像自 Chrome 的数据推导。
  3. browser-compat-data 未记录 Firefox 的支持。
  4. browser-compat-data 未记录 Firefox for Android 的支持。
  5. 由 browser-compat-data 镜像自 Firefox 的数据推导。
  6. browser-compat-data 未记录 Safari 的支持。
  7. browser-compat-data 未记录 iOS 版 Safari 的支持。
  8. 由 browser-compat-data 镜像自 Safari 的数据推导。
  9. browser-compat-data 未记录 Samsung Internet 的支持。
  10. 由 browser-compat-data 镜像自 Chrome Android 的数据推导。
  11. browser-compat-data 未记录 WebView Android 的支持。
  12. 由 browser-compat-data 镜像自 Chrome Android 的数据推导。

源数据: /compatibility/web-hid.json · 全球使用占比: 37 % (StatCounter 2026-05)

来源: 规范 · MDN · 最近核验 2026-10-03 · 置信度: 高 (由来源计算)

请求设备必须在用户手势内进行,filters 可将选择器限定为匹配指定 vendorId 的设备。 用户选择设备后,需要先打开设备,然后才能收发报文:

async function connectHidDevice() {
const [device] = await navigator.hid.requestDevice({
filters: [{ vendorId: 0x2341 }],
});
await device.open();
return device;
}

在提供该功能之前先检测 navigator.hid 是否存在,并为不支持的情况提供回退:

if ('hid' in navigator) {
connectButton.hidden = false;
} else {
connectButton.hidden = true;
fallbackNotice.textContent = '此浏览器无法在页面中访问 HID 设备。';
}
  • 需要安全上下文——除了 localhost 这类被视为可信的来源外,普通 HTTP 源不可用。
  • requestDevice() 需要短暂的用户激活(点击或按键处理函数);缺少时返回的 Promise 会以 SecurityError DOMException 拒绝。
  • requestDevice() 返回的数组(而非单个设备)包含用户所选设备暴露出的各个 HID 接口——空数组意味着用户关闭了选择器而没有做出选择。
  • 设备必须先 open() 才能发送报文;对尚未打开的设备调用 sendReport() 会以 InvalidStateError DOMException 拒绝。
  • 根据 MDN browser-compat-data,Chrome for Android 及 Android WebView 均未实现该 API, 因此在这些环境中 'hid' in navigator 为 false,依赖 HID 的流程需要使用上面的 回退路径。

完整参考(安全上下文规则、连接/断开事件、报文处理)见 WebHID API。

另见通过串口实现相同流程的 Web Serial API。

← 返回兼容性浏览器。