0

我正在尝试使用 WebUSB API 从 USB 设备获取断开连接事件。

我正在访问设备并通过以下方式将事件侦听器添加到“断开连接”:

    navigator.usb.requestDevice({ filters: [{ vendorId: ... ... ...}] })
    .then(device=> {
            navigator.usb.addEventListener('disconnect', device => {
                    printToScreen("Message", "Device disconnect!!! ");
            });
            return device.open();
    })

仅供参考: printToScreen() 方法将文本添加到 div 标签。

设备已连接,当我单击地址栏中的锁定图标时,我可以看到列出的设备权限,并且我可以毫无问题地检索着陆页 URL。当我断开设备时,列出的设备权限被删除(这是正常的,因为设备没有序列号,因此用户授予的权限不能持久)但没有出现断开事件?不知道我做错了什么。

所以我的问题是,如何从断开事件中检测/获取回调?或者这是一个错误,我应该提交它?任何帮助将不胜感激,谢谢。

同样,将序列号添加到设备后,当我尝试使用“return device.open()”打开设备时出现“NotFoundError:设备不可用”,但“navigator.usb.requestDevice”返回正确设备。

4

1 回答 1

2

我刚刚提交了issue 737321来跟踪这个问题。这是一种故障模式,在 chrome.usb API 中解决了,但在 WebUSB 中通过,因为复制它取决于内部 Chrome 组件的初始化顺序。

更新:此修复将在 Chrome 61.0.3144.0 中可用。

于 2017-06-28T00:11:29.330 回答