reactjs - React useEffect hook 导致 DOMException: User activation is required to request permissions
问题描述
我有一个 ReactuseEffect
挂钩,可以读取用户之前批准的本地文件。
要读取文件,它使用该[FileSystemHandle.queryPermission()][1]
方法,如果没有,granted
它将提示用户使用该FileSystemHandle.requestPermission()
方法进行访问。
问题是这发生在用户有机会与页面交互之前,这会导致DOMException: User activation is required to request permissions.
错误。
有没有办法解决?
解决方案
这是由于 Google 定义的用户激活要求,现在已纳入HTML 规范。
解决此问题的方法是将此操作作为useEffect
挂钩的一部分从执行中删除,而是提示用户首先执行该操作。
在我的例子中,UI 将显示一个需要更新内容的指示器,并带有一个小按钮来触发操作。这符合用户激活的条件,并且该过程在没有错误的情况下运行。
let file, perms
perms = await fileHandle.queryPermission()
if (perms === 'granted') file = await fileHandle.getFile()
else if (perms === 'prompt') {
setButtonForRetry(true)
}
推荐阅读
- r - 由组迭代的不同类别因子的欧几里得远距离
- c# - 如何使用 ajax 触发控制器并打开新页面(连同模型)
- c++ - 在 Windows 上使用 c++filt 进行拆解 - gnu-v3
- sql - 在 Postgres 中生成 UUID
- javascript - 如何使用 WebUSB 从 HTML 文件输入中传输 PDF 数据
- python - 无损修剪和裁剪 MJPEG 视频
- r - 从“plm”包中为“pcce”模型扩展“texreg”时出错
- javascript - 错误:无法解析模块 ./navRoutes
- python - 如何将字符串分开两次?
- swift - 关于如何摆脱 Main.storyboard 中的 Xcode 导航栏的简单问题?