HIDDevice:inputreport 事件

Limited availability

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

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

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

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

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

语法

在诸如 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;

  // 处理 Joy-Con 右手柄设备和特定的报告 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(`用户按下了 ${someButtons[value]}。`);
});

规范

Specification
WebHID API
# dom-hiddevice-oninputreport

浏览器兼容性

BCD tables only load in the browser