FileSystemHandle: requestPermission() メソッド
利用可能性は限定的
この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
メモ: この機能はウェブワーカー内で利用可能です。
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
requestPermission() は FileSystemHandle インターフェイスのメソッドで、ファイルハンドルの読み取りまたは読み書きの許可を要求します。
構文
js
requestPermission(descriptor)
引数
descriptor省略可-
要求する許可のモードを指定するオブジェクトです。以下のオプションが設定可能です。
'mode'省略可-
'read','write','readwrite'のいずれかの値をとります。
返値
Promise であり、PermissionStatus.state に解決します。その値は 'granted', 'denied', 'prompt' のいずれかです。また、下記の例外のいずれかで拒否されることもあります。
例外
TypeError-
引数が指定されていないか、
modeが'read'でも'readwrite'でもないとき発生します。 SecurityErrorDOMException-
以下のいずれかの場合に発生します。
- このメソッドは、最上位のコンテキストと同一オリジンではないコンテキスト(つまり、オリジンを越えるiframe)内で呼び出された。
- ボタンの押下など、一時的な活性化がありませんでした。これには、ワーカーなど、ユーザーによる活性化を受け付けられない「ウィンドウ」以外のコンテキストでハンドルが実行されている場合も含まれます。
セキュリティ
ユーザーによる一時的な活性化が要求されます。この機能が動作するには、ユーザーがページまたは UI の要素を操作する必要があります。
例
以下の非同期関数は、許可が与えられていなければ許可を要求します。
js
// fileHandle は FileSystemFileHandle
// withWrite は書き込みのとき true となる boolean 値
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;
}
仕様書
| 仕様書 |
|---|
| File System Access> # api-filesystemhandle-requestpermission> |