Chrome WebUSB API не возвращает устройства при использовании navigator.usb.getDevices()
Я пробую новый Chrome WebUSB API, но не вижу ни одного подключенного устройства.
Попробовал это, например, с другими USB-устройствами, подключенными к моему ПК с Windows 7:
<html>
<body>
<button onclick="myFunction()">Click me</button>
<script>
function myFunction() {
console.log('Clicked');
navigator.usb.getDevices()
.then(devices => {
devices.map(device => {
console.log('Device:');
console.log(device.productName);
console.log(device.manufacturerName);
});
});
}
</script>
</body>
</html>
Но не получил устройства.
Что я делаю неправильно? Должно ли оно работать с любым устройством?
Благодарю.
1 ответ
Пока ваша страница не запросила разрешение на доступ к устройству navigator.usb.getDevices()
вернет пустой список. Внутри вашего onclick
вызов обработчика navigator.usb.requestDevice()
вместо этого с фильтром, выбирающим поставщика и идентификаторы продуктов устройств, которые вы хотели бы поддерживать. Смотрите пример из спецификации:
let button = document.getElementById('request-device');
button.addEventListener('click', async () => {
let device;
try {
device = await navigator.usb.requestDevice({ filters: [{
vendorId: 0xABCD,
classCode: 0xFF, // vendor-specific
protocolCode: 0x01
}]});
} catch () {
// No device was selected.
}
if (device !== undefined) {
// Add |device| to the UI.
}
});