【问题标题】:WebUSB API Error: The device was disconnectedWebUSB API 错误:设备已断开连接
【发布时间】:2018-02-07 23:55:53
【问题描述】:

我正在尝试使用 WebUSB API 通过 Web 与 Samsung J7 通信。 我目前正在使用这个基本代码:

<body>
    <button onclick="myFunction()">Click me</button>
    <script>
        function myFunction() {
        console.log('Clicked');
        var device;
        navigator.usb.requestDevice({ filters: [{ vendorId: 0x04e8 }] })
        .then(selectedDevice => {
                device = selectedDevice;
                console.log('Deive Selected: ');
                console.log(device.productName);
                console.log(device.manufacturerName);
                return device.open(); // Begin a session.
            })
            .catch(error => { console.log(error); });
        }
    </script>
</body>

device.open() 调用正在返回

DOMException:设备已断开连接

我使用 Chrome 在 Windows 和 Ubuntu 机器上测试了代码。两者都给出了相同的结果。对问题原因有任何帮助吗?

【问题讨论】:

    标签: android google-chrome usb webusb


    【解决方案1】:

    如果您还没有这样做,请尝试在本地托管您的网站。使用file:// url 访问我的测试页面时,我收到了相同的错误消息。在本地托管文件并从http:// 域访问它们为我解决了这个问题。

    在本地托管文件的一种简单方法是从您网站的根目录运行此命令:python2 -m SimpleHTTPServer。然后,您应该能够在浏览器中从域 http://localhost:8000 访问该站点。

    【讨论】:

    • 解决方案效果很好!我想知道你是否知道它为什么起作用或者是什么让你尝试这个?
    • @MohamadAliMhaidly 我被卡住了,有人向我建议。我不是 100% 确定为什么有必要从托管站点运行。我最好的猜测是它是从规范的早期版本继承而来的。在旧版本中,该设备向浏览器提供了一组静态的受信任域。这些域只能是 HTTP 或 HTTPS。在当前版本的规范中,低级 USB 请求仅支持 HTTP 和 HTTPS 域。 See here
    猜你喜欢
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多