首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何判断是否支持具有特定权限的navigator.permissions.query

如何判断是否支持具有特定权限的navigator.permissions.query
EN

Stack Overflow用户
提问于 2021-02-14 21:15:48
回答 1查看 1.8K关注 0票数 4

我有以下代码:

代码语言:javascript
运行
复制
if (navigator.permissions && navigator.permissions.query) {
  navigator.permissions.query({
    name: 'clipboard-write'
  }).then(function(result) {
    if (result.state === 'granted') {
      //Do something!
    } else{
      //Not granted...
    }
} else {
  //Does not support navigator.permissions
}

这适用于Safari和Chrome。然而,在Firefox中,它会引发以下错误:

代码语言:javascript
运行
复制
TypeError: 'name' member of PermissionDescriptor 'clipboard-write' is not a valid value for enumeration PermissionName.

navigator.permissions.query是受支持的,而不是clipboard-write。那么,如何查看浏览器是否支持:

代码语言:javascript
运行
复制
navigator.permissions.query({name:'clipboard-write'})

我想也许我可以检查一下使用的浏览器是什么,但我认为必须有更好的方法来实现它。

编辑(尝试/捕捉)

我使用以下代码尝试了try/catch

代码语言:javascript
运行
复制
try {
  navigator.permissions.query({
    name:'clipboard-write'
  });
}
catch(error) {
  console.log(error);
}

不幸的是,这并不是火狐中的catch

EN

回答 1

Stack Overflow用户

发布于 2021-05-26 13:46:32

聚会有点晚了,但你没有得到任何答案,万一有人在这个问题上绊倒了:

navigator.permissions返回一个承诺,因此除了.then()之外,您还可以在承诺被拒绝时使用.catch()

clipboard-write现在似乎可以在火狐中使用,所以我在这个例子中使用了camera,它在Firefox中仍然会失败(为了测试这一点,任何荒谬的值都可以)。

代码语言:javascript
运行
复制
navigator.permissions.query({
    name: 'camera'
  })
  .then((permissionObj) => {
    console.log(permissionObj);
    // ... check the permission object ...
  })
  .catch((error) => {
    // couldn't query the permission
    console.error(error);
  });

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

https://stackoverflow.com/questions/66200216

复制
相关文章

相似问题

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