检查用户是否授予剪贴板权限?

时间:2020-10-26 16:51:52

标签: javascript typescript browser permissions clipboard

如何检查用户是否已使用JavaScript授予剪贴板读取权限?

我正在尝试获取一个表示当前剪贴板权限状态的布尔值。

2 个答案:

答案 0 :(得分:2)

剪贴板读取权限具有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;
    }

}

答案 1 :(得分:1)

您可以使用Permissions API检查是否有权访问剪贴板:

await navigator.permissions.query({ name: 'clipboard-read' });
// or 'clipboard-write' for permission to write

// sample result: {state: 'granted'}