HID 设备:inputreport 事件

可用性有限

此功能不是基线功能,因为它在某些最广泛使用的浏览器中无法正常工作。

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中可用。

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

当从 HID 设备接收到新报告时,HIDDevice 接口的inputreport 事件会被触发。

语法

在诸如addEventListener()之类的的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("inputreport", (event) => {});

oninputreport = (event) => {};

事件类型

事件属性

此接口还继承了Event的属性。

HIDInputReportEvent.data 只读

一个DataView,包含来自输入报告的数据,如果 HID 接口使用报告 ID,则不包括reportId

HIDInputReportEvent.device 只读

表示发送输入报告的 HID 接口的HIDDevice 实例。

HIDInputReportEvent.reportId 只读

此报告的单字节识别前缀,如果 HID 接口不使用报告 ID,则为 0。

示例

以下示例演示了侦听inputreport 事件,该事件将允许应用程序检测 Joy-Con 右侧设备上按下了哪个按钮。您可以在文章连接到不常见的 HID 设备中查看更多示例和实时演示。

js
device.addEventListener("inputreport", (event) => {
  const { data, device, reportId } = event;

  // Handle only the Joy-Con Right device and a specific report ID.
  if (device.productId !== 0x2007 && reportId !== 0x3f) return;

  const value = data.getUint8(0);
  if (value === 0) return;

  const someButtons = { 1: "A", 2: "X", 4: "B", 8: "Y" };
  console.log(`User pressed button ${someButtons[value]}.`);
});

规范

规范
WebHID API
# dom-hiddevice-oninputreport

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。