首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是“必须处理用户手势以显示权限请求”。Chrome Web Serial API中出现错误消息?

什么是“必须处理用户手势以显示权限请求”。Chrome Web Serial API中出现错误消息?
EN

Stack Overflow用户
提问于 2021-11-17 15:33:46
回答 2查看 996关注 0票数 1

当涉及到编程时,我是真正的初学者。我的意图是通过COM端口RS485控制一个集成在Google Chrome中的设备。我尝试重现以下教程:https://web.dev/serial/

控制台中会出现以下错误消息:

“未捕获(在promise中) DOMException:未能在”“Serial”“上执行”“requestPort”“:必须正在处理用户手势以显示权限请求。”

如何修复此错误?

非常感谢你的帮助。

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>examplepage</title>
    <script>
    async function caller() {
        // Prompt user to select any serial port.
    const port = await navigator.serial.requestPort();

    // Wait for the serial port to open.
    await port.open({ baudRate: 9600 });
    };
    
    if ("serial" in navigator) {
  alert("Your browser supports Web Serial API!");
  caller();
}
    else {alert("Your browser does not support Web Serial API, the latest version of Google Chrome is recommended!");};
    
    
    </script>
  </head>
  <body>
  
  </body>
</html>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-18 09:49:10

错误消息"Must be handling a user gesture to show a permission request."意味着必须在响应用户手势(如单击)的函数内调用navigator.serial.requestPort()

在您的情况下,它将类似于下面的内容。

代码语言:javascript
运行
复制
<button>Request Serial Port</button>
<script>
  const button = document.querySelector('button');
  button.addEventListener('click', async function() {

    // Prompt user to select any serial port.
    const port = await navigator.serial.requestPort();

    // Wait for the serial port to open.
    await port.open({ baudRate: 9600 });
  });
</script>
票数 1
EN

Stack Overflow用户

发布于 2021-11-19 09:16:46

下面的代码可以工作。我希望它能对其他感兴趣的人有所帮助。

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>examplepage</title>
    <script>
    async function start() 
    {
            // Prompt user to select any serial port.
            const port = await navigator.serial.requestPort();

            // Wait for the serial port to open.
            await port.open({ baudRate: 9600 });
    }
    
    if ("serial" in navigator) {
  alert("Your browser supports Web Serial API!");
}
    else {alert("Your browser does not support Web Serial API, the latest version of Google Chrome is recommended!");};
    
    </script>
  </head>
  <body>
   <button onclick="start()">Click me</button> 
  </body>
</html>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70007274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档