0

我需要在我的网站中打开本地文件功能,因此我在代码中使用了文件系统访问 API。当从本地打开的文件被我的网站编辑并需要保存到原始文件时。我发现它没有权限。因此,我找到了请求文件句柄权限的方法,如下所示:

    async function verifyPermission(fileHandle: any, readWrite: boolean) {
    const options = {
        mode: 'readwrite',
    };
    let isPermit = false;
    
    
    
    // Check if permission was already granted. If so, return true.
    if ((await fileHandle.queryPermission(options)) === 'granted') {
        isPermit =  true;
    }
    if ((await fileHandle.requestPermission(options)) === 'granted') {
        isPermit = true;
    }
    return isPermit;
}

但是当我 fileHandle.requestPermission(options)对它执行控制台错误时

Uncaught (in promise) DOMException: User activation is required to request permissions.

我错过了什么?谢谢QQ

4

1 回答 1

0

您始终可以查询文件的权限,但请求需要用户手势(如要单击的按钮)。这在规范中有所概述(强调我的):

如果此句柄的读取权限状态不是“提示”,则将直接返回该状态。但是,如果它是“提示”,则需要用户激活,这将向用户显示确认提示。然后根据用户对提示的响应返回新的读取权限状态。

您需要在实现中分离查询和请求权限。

于 2021-11-09T11:55:06.190 回答