我有以下代码:
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中,它会引发以下错误:
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
:
try {
navigator.permissions.query({
name:'clipboard-write'
});
}
catch(error) {
console.log(error);
}
不幸的是,这并不是火狐中的catch
。
发布于 2021-05-26 13:46:32
聚会有点晚了,但你没有得到任何答案,万一有人在这个问题上绊倒了:
navigator.permissions
返回一个承诺,因此除了.then()
之外,您还可以在承诺被拒绝时使用.catch()
。
clipboard-write
现在似乎可以在火狐中使用,所以我在这个例子中使用了camera
,它在Firefox中仍然会失败(为了测试这一点,任何荒谬的值都可以)。
navigator.permissions.query({
name: 'camera'
})
.then((permissionObj) => {
console.log(permissionObj);
// ... check the permission object ...
})
.catch((error) => {
// couldn't query the permission
console.error(error);
});
https://stackoverflow.com/questions/66200216
复制相似问题