【问题标题】:check whether user granted Clipboard permisssion or not?检查用户是否授予剪贴板权限?
【发布时间】:2020-10-26 16:51:52
【问题描述】:

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

我试图获取一个布尔值,指示当前剪贴板权限状态。

【问题讨论】:

    标签: javascript typescript browser permissions clipboard


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-13
        • 1970-01-01
        • 2013-05-17
        • 2021-02-01
        • 2016-03-14
        相关资源
        最近更新 更多