FileSystemHandle.requestPermission DOMException: для запроса разрешений требуется активация пользователя.

Мне нужна функция открытия локальных файлов на моем веб-сайте, поэтому я использую API доступа к файловой системе в своем коде. когда файл, открытый из локального, редактируется моим веб-сайтом и его нужно сохранить в исходный файл. Я обнаружил, что у него нет разрешения. Поэтому я нахожу способ запросить разрешение на обработку файла, как показано ниже:

          async function verifyPermission(fileHandle: any, readWrite: boolean) {
    const options = {
        mode: 'readwrite',
    };
    let isPermit = false;
    
    
    
    // Check if permission was already granted. If so, return true.
    if ((await fileHandle.queryPermission(options)) === 'granted') {
        isPermit =  true;
    }
    if ((await fileHandle.requestPermission(options)) === 'granted') {
        isPermit = true;
    }
    return isPermit;
}

но когда я выполняю ошибка консоли

      Uncaught (in promise) DOMException: User activation is required to request permissions.

Что мне не хватает? спасибо QQ

1 ответ

Решение

Вы всегда можете запросить разрешения для файла, но для этого требуется жест пользователя (например, нажатие кнопки). Это указано в спецификации (выделено мной):

Если состояние разрешения на чтение этого дескриптора отличается от «подсказки», это вернет это состояние напрямую. Однако, если это «запрос», требуется активация пользователя, и пользователю будет отображаться запрос на подтверждение. Затем возвращается новое состояние разрешения на чтение в зависимости от ответа пользователя на запрос.

Вам необходимо разделить запросы и запросы разрешений в вашей реализации.

Другие вопросы по тегам