HIDï¼requestDevice() æ¹æ³
æéå¯ç¨
æ¤ç¹æ§ä¸å±äºåºçº¿ï¼å 为å®å°æªå¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æã
å®å ¨ä¸ä¸æ: æ¤ç¹æ§ä» å¨ä¸äºæ¯æçæµè§å¨çå®å ¨ä¸ä¸æï¼HTTPSï¼ä¸å¯ç¨ã
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
HID æ¥å£ç requestDevice() æ¹æ³è¯·æ±è¯·é® HID 设å¤ã
ç¨æ·ä»£çå°æ¾ç¤ºä¸ä¸ªå å«å·²è¿æ¥è®¾å¤å表çæéå¯¹è¯æ¡ï¼å¹¶è¦æ±ç¨æ·éæ©å ¶ä¸ä¸ä¸ªè®¾å¤å¹¶æäºæéã
è¯æ³
requestDevice(options)
åæ°
options-
ä¸ä¸ªå¯¹è±¡ï¼å å«è¦ä¸ä¹é 对çå¯è½è®¾å¤çè¿æ»¤å¨å¯¹è±¡æ°ç»ãæ¯ä¸ªè¿æ»¤å¨å¯¹è±¡å¯ä»¥å ·æä»¥ä¸å±æ§ï¼
vendorIdå¯é-
ä¸ä¸ªæ´æ°ï¼è¡¨ç¤ºè¯·æ±ç HID 设å¤çä¾åºå IDï¼å³ï¼vendorIdï¼
productIdå¯é-
ä¸ä¸ªæ´æ°ï¼è¡¨ç¤ºè¯·æ±ç HID 设å¤ç产å IDï¼å³ï¼productIdï¼
usagePageå¯é-
ä¸ä¸ªæ´æ°ï¼è¡¨ç¤ºè¯·æ±è®¾å¤ç HID ç¨éä¸çç¨é页é¢ç»ä»¶ã顶级éåçç¨éç¨äºè¯å«è®¾å¤ç±»åã
å¯ä»¥å¨ HID 使ç¨è¡¨ ææ¡£ä¸æ¾å°æ å HID ç¨éå¼ã
usageå¯é-
ä¸ä¸ªæ´æ°ï¼è¡¨ç¤ºè¯·æ±è®¾å¤ç HID ç¨éä¸çç¨é ID ç»ä»¶ã
夿³¨ï¼è®¾å¤è¿æ»¤å¨ç¨äºç¼©å°åç¨æ·å±ç¤ºç设å¤å表ãå¦ææ²¡æè¿æ»¤å¨ï¼åæ¾ç¤ºææè¿æ¥ç设å¤ãå½å å«ä¸ä¸ªæå¤ä¸ªè¿æ»¤å¨æ¶ï¼å¦æä»»ä½è¿æ»¤å¨å¹é ï¼åå å«è¯¥è®¾å¤ã为äºå¹é è¿æ»¤å¨ï¼è¯¥è¿æ»¤å¨ä¸å å«çææè§åé½å¿ é¡»å¹é ã
è¿åå¼
ä¸ä¸ªä¼å
ç°ä¸ºä¸ä¼ å
¥çè¿æ»¤å¨å¹é
çå·²è¿æ¥ HIDDevice 对象æ°ç»ç Promiseã
å¼å¸¸
SecurityErrorDOMException-
妿页é¢ä¸å è®¸è®¿é® HID åè½ï¼åä¼æåºæ¤å¼å¸¸ã
å®å ¨æ§
éè¦ç¬æç¨æ·æ¿æ´»ãç¨æ·å¿ é¡»ä¸é¡µé¢æ UI å ç´ è¿è¡äº¤äºï¼æè½ä½¿æ¤åè½æ£å¸¸å·¥ä½ã
示ä¾
>å¹é å ·æææåä¸ªè¿æ»¤å¨è§åç设å¤
å¨ä»¥ä¸ç¤ºä¾ä¸ï¼è¯·æ±ä¸ä¸ªå
·æä¾åºå ID 0xABCDã产å ID 0x1234ãç¨éé¡µé¢ 0x0C åç¨é ID 0x01 ç HID 设å¤ãåªæå¹é
ææè¿äºè§åçè®¾å¤æä¼æ¾ç¤ºã
let requestButton = document.getElementById("request-hid-device");
requestButton.addEventListener("click", async () => {
let device;
try {
const devices = await navigator.hid.requestDevice({
filters: [
{
vendorId: 0xabcd,
productId: 0x1234,
usagePage: 0x0c,
usage: 0x01,
},
],
});
device = devices[0];
} catch (error) {
console.log("åçé误ã");
}
if (!device) {
console.log("没æéæ©è®¾å¤ã");
} else {
console.log(`HIDï¼${device.productName}`);
}
});
å å«ä¸¤ä¸ªè¿æ»¤å¨ç示ä¾
ä¸ä¸ä¸ªç¤ºä¾å å«äºä¸¤ä¸ªè¿æ»¤å¨ãå¦æè®¾å¤å¹é å ¶ä¸ä»»ä½ä¸ä¸ªè¿æ»¤å¨ï¼å®ä»¬å°è¢«æ¾ç¤ºåºæ¥ã
// è¿æ»¤å
·æ Nintendo Switch Joy-Con USB ä¾åºå/产å ID ç设å¤ã
const filters = [
{
vendorId: 0x057e, // ä»»å¤©å æ ªå¼ä¼ç¤¾ï¼Nintendo Co., Ltdï¼
productId: 0x2006, // Joy-Con å·¦ææ
},
{
vendorId: 0x057e, // ä»»å¤©å æ ªå¼ä¼ç¤¾ï¼Nintendo Co., Ltdï¼
productId: 0x2007, // Joy-Con 峿æ
},
];
// æç¤ºç¨æ·éæ©ä¸ä¸ª Joy-Con 设å¤ã
const [device] = await navigator.hid.requestDevice({ filters });
è§è
| è§è |
|---|
| WebHID API > # dom-hid-requestdevice > |