【发布时间】:2020-10-26 16:51:52
【问题描述】:
如何使用javascript检查用户是否已授予剪贴板读取权限?
我试图获取一个布尔值,指示当前剪贴板权限状态。
【问题讨论】:
标签: javascript typescript browser permissions clipboard
如何使用javascript检查用户是否已授予剪贴板读取权限?
我试图获取一个布尔值,指示当前剪贴板权限状态。
【问题讨论】:
标签: javascript typescript browser permissions clipboard
剪贴板读取权限有3种状态:已授予、已拒绝或提示“既不拒绝也不授予”。
因此,您的代码应如下所示:
const queryOpts = { name: 'clipboard-read', allowWithoutGesture: false };
const permissionStatus = await navigator.permissions.query(queryOpts);
// Will be 'granted', 'denied' or 'prompt':
console.log(permissionStatus.state);
// Listen for changes to the permission state
permissionStatus.onchange = () => {
console.log(permissionStatus.state);
};
代码引用:https://web.dev/async-clipboard/
所以从上面的代码中,你可以编写一个返回 true 或 false 的函数,例如:
// you pass permissionStatus.state to this function
const checkClipboardPermission = (state) => {
if(state == "granted"){
return true;
}
else if(state == "denied"){
return false;
}
else {
return false;
}
}
【讨论】:
您可以使用Permissions API检查您是否有权访问剪贴板:
await navigator.permissions.query({ name: 'clipboard-read' });
// or 'clipboard-write' for permission to write
// sample result: {state: 'granted'}
【讨论】: