FileSystemHandle:requestPermission() 方法
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
备注: 此特性在 Web Worker 中可用。
FileSystemHandle
接口的 queryPermission()
方法用于为文件句柄请求读取或读写权限。
语法
js
requestPermission(descriptor)
参数
descriptor
可选-
一个对象,指定需要查询的权限模式,包含以下选项:
'mode'
可选-
可以是
'read'
或'readwrite'
。
返回值
一个兑现为 PermissionStatus.state
的 Promise
,其值为 'granted'
、'denied'
或 'prompt'
。它也可能因出现以下异常而被拒绝。
异常
TypeError
-
如果没有指定参数或者
mode
的值不是'read'
或'readwrite'
,则抛出此异常。 SecurityError
DOMException
-
在下列情况之一发生时抛出:
- 该方法是在与顶级上下文不同源的上下文(例如跨源 iframe)中调用的。
- 没有瞬态用户激活,例如按下按钮。这包括当句柄处于无法使用用户激活的非 Window 上下文(例如 Worker)中时。
安全
瞬态用户激活是必需的。用户必须与页面或 UI 元素进行交互才能使该特性正常运行。
示例
以下异步函数会在句柄没有获得授权时请求权限。
js
// fileHandle 是一个 FileSystemFileHandle
// withWrite 是一个布尔值,如果要求写入则需传入 true
async function verifyPermission(fileHandle, withWrite) {
const opts = {};
if (withWrite) {
opts.mode = "readwrite";
}
// 检查是否已经拥有相应权限,如果是,返回 true。
if ((await fileHandle.queryPermission(opts)) === "granted") {
return true;
}
// 为文件请求权限,如果用户授予了权限,返回 true。
if ((await fileHandle.requestPermission(opts)) === "granted") {
return true;
}
// 用户没有授权,返回 false。
return false;
}
规范
Specification |
---|
File System Access # api-filesystemhandle-requestpermission |
浏览器兼容性
BCD tables only load in the browser