FileSystemHandle: requestPermission() 方法

安全上下文:此功能仅在 安全上下文 (HTTPS) 中可用,在部分或所有 支持的浏览器 中可用。

注意:此功能在 Web Workers 中可用。

实验性:这是一项 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表格

requestPermission() 方法是 FileSystemHandle 接口的方法,用于请求文件句柄的读或读写权限。

语法

js
requestPermission(descriptor)

参数

descriptor 可选

一个指定要查询的权限模式的对象。选项如下

'mode' 可选

可以是 'read''readwrite'

返回值

一个 Promise,它解析为 PermissionStatus.state,该状态可以是 'granted''denied''prompt' 之一。它也可能因以下异常而拒绝。

异常

TypeError

如果未指定参数或 mode 不是 'read''readwrite',则抛出此异常。

SecurityError DOMException

在以下情况之一中抛出此异常

  • 该方法在与顶级上下文(即跨域 iframe)同源 的上下文中调用。
  • 没有瞬态用户激活,例如按钮按下。这包括句柄在无法使用用户激活的非窗口上下文中时,例如工作线程。

安全性

瞬态用户激活 是必需的。用户必须与页面或 UI 元素交互才能使用此功能。

示例

以下异步函数将在未授予权限的情况下请求权限。

js
// fileHandle is a FileSystemFileHandle
// withWrite is a boolean set to true if write

async function verifyPermission(fileHandle, withWrite) {
  const opts = {};
  if (withWrite) {
    opts.mode = "readwrite";
  }

  // Check if we already have permission, if so, return true.
  if ((await fileHandle.queryPermission(opts)) === "granted") {
    return true;
  }

  // Request permission to the file, if the user grants permission, return true.
  if ((await fileHandle.requestPermission(opts)) === "granted") {
    return true;
  }

  // The user did not grant permission, return false.
  return false;
}

规范

规范
文件系统访问
# api-filesystemhandle-requestpermission

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅