מכשיר ממשק אנושי (HID) מקבל קלט מבן אדם או מספק פלט לגביו. הוא מתייחס גם לפרוטוקול HID, תקן לתקשורת דו-כיוונית בין מארח למכשיר שנועד לפשט את תהליך ההתקנה.
בדף הזה מתוארים היבטים של ממשק ה-API שרלוונטיים לתוספים. ב-MDN מופיעים הפרטים המלאים של WebHID API.
אפשר למצוא אפליקציה לדוגמה ל-WebHID במאגר הדוגמאות שלנו.
זמינות בתוספים
Chrome מגרסה 117 ואילך.
הרשאות
לא נדרשות הרשאות לקובץ מניפסט; עם זאת, WebHID מפעיל את תהליך הרשאת המשתמש של הדפדפן.
מניפסט
אין צורך במפתחות מניפסט ל-API הזה.
הקשרים תומכים
אפשר להשתמש ב-API הזה כמעט בכל הקשר. לא ניתן להשתמש בשיטה WebHID.requestDevice()
ב-service worker של תוספים. למידע נוסף, עיין בקטע הבא.
כאשר נעשה שימוש ב-API הזה ב-Service Worker של תוסף, סשן החיבור של המכשיר משאיר את קובץ השירות פעיל.
הבדלים בין תוספים ל-Chrome
למרות ש-WebHID זמין ל-service worker של תוסף, לא ניתן לקרוא ל-Service Worker של תוסף WebHID.requestDevice()
, שמחזיר הבטחה שנפתרת עם מכונת HIDDevice. כדי לעקוף את הבעיה, יש להתקשר אל requestDevice()
מדף של תוסף שאינו ה-service worker של התוסף, ולשלוח הודעה ל-service worker של התוסף.
הקוד הבא בנוי לפי דפוס אופייני. הוא מבצע קריאה ל-requestDevice()
כחלק מתהליך ההרשאות, שמחייב תנועה של משתמש. לאחר רכישת המכשיר, הוא שולח הודעה ל-Service Worker, שמסוגל לאחזר את המכשיר באמצעות getDevices()
.
popup.js:
myButton.addEventListener("click", async () => {
await navigator.hid.requestDevice({
filters: [{ vendorId: 0x1234, productId: 0x5678 }],
});
chrome.runtime.sendMessage("newDevice");
});
service-worker.js
chrome.runtime.onMessage.addListener(async (message) => {
if (message === "newDevice") {
const devices = await navigator.hid.getDevices();
for (const device of devices) {
// open device connection.
await device.open();
}
}
});