Обработка файлов позволяет настроить ChromeOS так, чтобы ваше расширение могло открывать файлы с помощью меню «Открыть» меню «Файл» или меню «Открыть с помощью» контекстного меню. После открытия вы обрабатываете данные файла с помощью API Launch Handler веб-платформы. Затем вы будете использовать стандартные API-интерфейсы веб-платформы для отображения или обработки файла .
Доступность в расширениях
ChromeOS 120 или новее.
Разрешения
Для обработки файлов не требуются никакие разрешения.
Манифест
Вам необходимо добавить массив "file_handlers"
в файл манифеста.json.
Поддерживающие контексты
Этот API можно использовать в рабочих службах расширений, всплывающих окнах, боковых панелях или сценариях контента.
Настройка обработчика файлов
Каждый член "file_handlers"
— то есть каждый обработчик файла — определяет тип или типы файлов, которые будут обрабатываться конкретной страницей расширения.
Указанные вами обработчики будут добавлены в окно «Файлы» ChromeOS, в частности в меню «Открыть» и «Открыть с помощью». Они появятся в этих меню только тогда, когда пользователь выберет файл с определенным расширением. Например, если в обработчике файла указан формат .txt
в меню ChromeOS этот обработчик отображается только при выборе файла с таким расширением.
Обработать файл
Обработчик файла — это HTML-файл, содержащийся в вашем расширении. Когда пользователь выбирает обработчик из меню, HTML-файл открывается на новой вкладке. Обработка файла, независимо от того, отображаете ли вы его или используете каким-либо другим способом, выполняется с помощью JavaScript с использованием соответствующих API-интерфейсов веб-платформы. Код обработки должен находиться в отдельном файле JavaScript и включаться через тег <script>
, а также должен находиться в вашем расширении. Файл сценария использует интерфейс LaunchQueue
API Launch Handler для получения объекта FileSystemFileHandle
.
Пример
В следующем примере показано, как получить объект FileSystemFileHandle
с помощью интерфейса LaunchQueue
. Чтобы увидеть работу с файлами в действии, установите демонстрационную версию File Handling Demo .
if ('launchQueue' in window) {
launchQueue.setConsumer(async launchParams => {
if (!launchParams.files || !launchParams.files.length) { return; }
const fileHandle = launchParams.files[0];
});
}
``````