FileSystemHandle: phương thức queryPermission()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web Workers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Phương thức queryPermission() của giao diện FileSystemHandle truy vấn trạng thái quyền hiện tại của handle hiện tại.

Cú pháp

js
queryPermission(descriptor)

Tham số

descriptor Optional

Một object chỉ định chế độ quyền cần truy vấn. Các tùy chọn như sau:

'mode' Optional

Có thể là 'read', 'write' hoặc 'readwrite'.

Giá trị trả về

Một Promise được resolve với PermissionStatus.state là một trong 'granted', 'denied' hoặc 'prompt'. Nó cũng có thể reject với một trong các ngoại lệ bên dưới.

Nếu Promise resolve với "prompt", website sẽ phải gọi requestPermission() trước khi có thể thực hiện bất kỳ thao tác nào trên handle. Nếu resolve với "denied", mọi thao tác sẽ bị reject. Thông thường, các handle trả về từ các factory của hệ thống file cục bộ sẽ ban đầu resolve với "granted" cho trạng thái quyền đọc. Tuy nhiên, ngoại trừ trường hợp người dùng thu hồi quyền, một handle lấy từ IndexedDB cũng rất có thể resolve với "prompt".

Ngoại lệ

TypeError

Được ném ra nếu mode được chỉ định với giá trị khác 'read', 'write' hoặc 'readwrite'.

Ví dụ

Hàm bất đồng bộ sau trả về true nếu người dùng đã cấp quyền đọc hoặc đọc-ghi cho file handle. Nếu chưa, quyền sẽ được yêu cầu.

js
// fileHandle là một FileSystemFileHandle
// withWrite là một boolean được đặt thành true nếu muốn ghi

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

  // Kiểm tra xem chúng ta đã có quyền chưa, nếu có thì trả về true.
  if ((await fileHandle.queryPermission(opts)) === "granted") {
    return true;
  }

  // Yêu cầu quyền với file, nếu người dùng cấp quyền thì trả về true.
  if ((await fileHandle.requestPermission(opts)) === "granted") {
    return true;
  }

  // Người dùng không cấp quyền, trả về false.
  return false;
}

Thông số kỹ thuật

Specification
File System Access
# api-filesystemhandle-querypermission

Tương thích trình duyệt

Xem thêm