FileSystemHandle: queryPermission() メソッド
利用可能性は限定的
この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
メモ: この機能はウェブワーカー内で利用可能です。
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
queryPermission() は FileSystemHandle インターフェイスのメソッドで、現在のハンドルの現在の許可の状態を取得します。
構文
queryPermission(descriptor)
引数
descriptor省略可-
問い合わせる権限モードを指定するオブジェクトです。オプションは以下の通りです。
'mode'省略可-
'read','write','readwrite'のいずれかを取ります。
返値
Promise であり、PermissionStatus.state に解決します。その値は 'granted', 'denied', 'prompt' のいずれかです。また、下記の例外のいずれかで拒否されることもあります。
これが "prompt" で解決された場合、ハンドルに対する操作を行う前に、ウェブサイトは requestPermission() を呼び出す必要があります。これが "denied" で解決された場合は、いかなる操作も拒否されます。通常、ローカルファイルシステムのハンドルファクトリーによって返されるハンドルは、読み取り権限の状態について、最初は "granted" で解決されます。ただし、ユーザーがその権限を取り消した場合を除き、IndexedDB から取得したハンドルも "prompt" を返す可能性が高いでしょう。
例外
TypeError-
modeが'read'でも'readwrite'でもない値に設定されたときに発生します。
例
以下の非同期関数は、ユーザーがファイルハンドルに読み取りまたは読み書きの許可を与えた場合 true を返します。許可が与えられていない場合、許可を要求します。
// 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-querypermission> |