WebUSB API addEventListener 断开未触发

WebUSB API addEventListener disconnect not triggering

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

我正在通过以下方式访问设备并向 "disconnect" 添加事件侦听器:

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

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

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

所以我的问题是,如何 detect/get 断开连接事件的回调?或者这是一个错误,我应该提交它吗?任何帮助将不胜感激,谢谢。

此外,在将序列号添加到设备后,当我尝试使用 "return device.open()" 打开设备时,我得到一个 "NotFoundError: Device unavailable",但是 "navigator.usb.requestDevice" returns 正确的设备。

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

更新:此修复程序将在 Chrome 61.0.3144.0.

中可用