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

Javascript 如何判断是否支持具有特定权限的navigator.permissions.query,javascript,firefox,permissions,cross-browser,navigator,Javascript,Firefox,Permissions,Cross Browser,Navigator,我有以下代码: if (navigator.permissions && navigator.permissions.query) { navigator.permissions.query({ name: 'clipboard-write' }).then(function(result) { if (result.state === 'granted') { //Do something! } else{ //Not g

我有以下代码:

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
}
try {
  navigator.permissions.query({
    name:'clipboard-write'
  });
}
catch(error) {
  console.log(error);
}
这适用于Safari和Chrome。但是,在Firefox中,它会抛出以下错误:

TypeError: 'name' member of PermissionDescriptor 'clipboard-write' is not a valid value for enumeration PermissionName.
支持
navigator.permissions.query
,但不支持
clipboard write
。那么,如何查看浏览器是否支持:

navigator.permissions.query({name:'clipboard-write'})
我想我可以检查一下正在使用的浏览器,但我认为必须有更好的方法

编辑(尝试/捕获)

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

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
}
try {
  navigator.permissions.query({
    name:'clipboard-write'
  });
}
catch(error) {
  console.log(error);
}

不幸的是,在Firefox中,这并没有捕获到。

参加聚会有点晚,但看到你没有得到任何答案,万一有人偶然发现这个问题:

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

clipboard write
现在似乎在Firefox中可用,所以我在本例中使用了
camera
,但在Firefox中仍然会失败(为了测试这一点,任何无意义的值都可以)

navigator.permissions.query({
名称:“照相机”
})
。然后((permissionObj)=>{
控制台日志(permissionObj);
//…请检查权限对象。。。
})
.catch((错误)=>{
//无法查询权限
控制台错误(error);

});派对迟到了一点,但是看到你没有得到任何答案,万一有人偶然发现这个问题:

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

clipboard write
现在似乎在Firefox中可用,所以我在本例中使用了
camera
,但在Firefox中仍然会失败(为了测试这一点,任何无意义的值都可以)

navigator.permissions.query({
名称:“照相机”
})
。然后((permissionObj)=>{
控制台日志(permissionObj);
//…请检查权限对象。。。
})
.catch((错误)=>{
//无法查询权限
控制台错误(error);

});
你可以使用
try/catch
@Barmar我试过了,我错过了什么吗?你可以使用
try/catch
@Barmar我试过了,我错过了什么吗?