HID: метод requestDevice()
Ограниченная доступность
Эта функция не является базовой, поскольку она не работает в некоторых из наиболее широко используемых браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Экспериментальная функция: Это экспериментальная технология
Перед использованием в рабочей среде внимательно ознакомьтесь со таблицей совместимости браузеров.
Метод requestDevice() интерфейса HID запрашивает доступ к устройству HID.
Пользовательский агент отобразит диалоговое окно с разрешением, включающее список подключённых устройств, и попросит пользователя выбрать и предоставить разрешение на одно из этих устройств.
Синтаксис
requestDevice(options)
Параметры
options-
Объект, содержащий массив объектов фильтра для возможных устройств для сопряжения. Каждый объект фильтра может иметь следующие свойства:
vendorIdНеобязательно-
Целое число, представляющее vendorId запрошенного устройства HID
productIdНеобязательно-
Целое число, представляющее productId запрошенного устройства HID.
usagePageНеобязательно-
Целое число, представляющее компонент страницы использования HID запрошенного устройства. Использование для коллекции верхнего уровня используется для идентификации типа устройства.
Стандартные значения использования HID можно найти в документе HID Usage Tables
usageНеобязательно-
Целое число, представляющее компонент идентификатора использования HID запрошенного устройства.
Примечание: Фильтры устройств используются для сужения списка устройств, представленных пользователю. Если фильтры отсутствуют, показываются все подключённые устройства. Если один или несколько фильтров включены, устройство включается, если любой фильтр совпадает. Для соответствия фильтру все правила, включенные в этот фильтр, должны соответствовать.
Значение возврата
А Promise, который разрешается массивом подключённых объектов HIDDevice, соответствующих переданным фильтрам.
Исключения
-
SecurityErrorDOMException -
Выбрасывается, если страница не разрешает доступ к функции HID.
Безопасность
Временная активация пользователя требуется. Пользователь должен взаимодействовать со страницей или элементом интерфейса пользователя, чтобы эта функция работала.
Примеры
Сопоставление устройства со всеми четырьмя правилами фильтра
В следующем примере запрашивается устройство HID с vendor ID 0xABCD, product ID 0x1234, page usage 0x0C и usage ID 0x01. Будут показаны только устройства, соответствующие всем этим правилам.
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("An error occurred.");
}
if (!device) {
console.log("No device was selected.");
} else {
console.log(`HID: ${device.productName}`);
}
});
Пример с двумя фильтрами
В этом примере используются два фильтра. Устройства будут показаны, если они соответствуют любому из этих фильтров.
// Filter on devices with the Nintendo Switch Joy-Con USB Vendor/Product IDs.
const filters = [
{
vendorId: 0x057e, // Nintendo Co., Ltd
productId: 0x2006, // Joy-Con Left
},
{
vendorId: 0x057e, // Nintendo Co., Ltd
productId: 0x2007, // Joy-Con Right
},
];
// Prompt user to select a Joy-Con device.
const [device] = await navigator.hid.requestDevice({ filters });
Спецификации
| Спецификация |
|---|
| WebHID API # dom-hid-requestdevice |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
requestDevice |
89 | 89 | Нет | 75 | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/HID/requestDevice