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.
  }
});
Другие вопросы по тегам