HIDDevice

Limited availability

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

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Note: This feature is available in Web Workers, except for Shared Web Workers.

Giao diện HIDDevice của WebHID API đại diện cho một thiết bị HID. Nó cung cấp các thuộc tính để truy cập thông tin về thiết bị, các phương thức để mở và đóng kết nối, cũng như gửi và nhận báo cáo.

EventTarget HIDDevice

Thuộc tính phiên bản

Giao diện này cũng kế thừa các thuộc tính từ EventTarget.

HIDDevice.opened Read only Experimental

Trả về giá trị boolean, true nếu thiết bị đang có kết nối mở.

HIDDevice.vendorId Read only Experimental

Trả về vendorId của thiết bị HID.

HIDDevice.productId Read only Experimental

Trả về productId của thiết bị HID.

HIDDevice.productName Read only Experimental

Trả về chuỗi chứa tên sản phẩm của thiết bị HID.

HIDDevice.collections Read only Experimental

Trả về một mảng các định dạng báo cáo của thiết bị HID.

Sự kiện

inputreport Experimental

Kích hoạt khi thiết bị gửi một báo cáo.

Phương thức phiên bản

Giao diện này cũng kế thừa các phương thức từ EventTarget.

HIDDevice.open() Experimental

Mở kết nối đến thiết bị HID này và trả về một Promise được giải quyết khi kết nối thành công.

HIDDevice.close() Experimental

Đóng kết nối đến thiết bị HID này và trả về một Promise được giải quyết khi kết nối đã đóng.

HIDDevice.forget() Experimental

Đóng kết nối đến thiết bị HID này và đặt lại quyền truy cập, trả về một Promise được giải quyết khi quyền đã được đặt lại.

HIDDevice.sendReport() Experimental

Gửi báo cáo đầu ra đến thiết bị HID này và trả về một Promise được giải quyết khi báo cáo đã được gửi.

HIDDevice.sendFeatureReport() Experimental

Gửi báo cáo tính năng đến thiết bị HID này và trả về một Promise được giải quyết khi báo cáo đã được gửi.

HIDDevice.receiveFeatureReport() Experimental

Nhận báo cáo tính năng từ thiết bị HID này dưới dạng một Promise được giải quyết với một DataView. Điều này cho phép truy cập có kiểu vào nội dung của thông điệp này.

Ví dụ

Ví dụ sau minh họa cách lắng nghe sự kiện inputreport cho phép ứng dụng phát hiện nút nào được nhấn trên thiết bị Joy-Con Right.

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]}.`);
});

Trong ví dụ sau, sendFeatureReport được dùng để làm thiết bị nhấp nháy.

js
const reportId = 1;
for (let i = 0; i < 10; i++) {
  // Turn off
  await device.sendFeatureReport(reportId, Uint32Array.from([0, 0]));
  await new Promise((resolve) => setTimeout(resolve, 100));
  // Turn on
  await device.sendFeatureReport(reportId, Uint32Array.from([512, 0]));
  await new Promise((resolve) => setTimeout(resolve, 100));
}

Bạn có thể xem thêm ví dụ và bản demo trực tiếp trong bài viết Kết nối với các thiết bị HID không phổ biến.

Thông số kỹ thuật

Specification
WebHID API
# dom-hiddevice

Tương thích trình duyệt