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 ответ
Вы всегда можете запросить разрешения для файла, но для этого требуется жест пользователя (например, нажатие кнопки). Это указано в спецификации (выделено мной):
Если состояние разрешения на чтение этого дескриптора отличается от «подсказки», это вернет это состояние напрямую. Однако, если это «запрос», требуется активация пользователя, и пользователю будет отображаться запрос на подтверждение. Затем возвращается новое состояние разрешения на чтение в зависимости от ответа пользователя на запрос.
Вам необходимо разделить запросы и запросы разрешений в вашей реализации.