Может ли скрипт browser_action расширения браузера сохранять данные в указанный пользователем файл? - PullRequest
0 голосов
/ 07 апреля 2020

Мое расширение имеет много опций, и пользователи могут сохранять другие данные, и все они находятся в browser.storage.local. Я хотел бы предоставить возможность экспортировать данные в файл JSON. Из обычного скрипта страницы я бы использовал Blob () и saveAs, но saveAs не определено в контексте browser_action, который я использую для своей страницы настроек, которая является естественным домом для опции.

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

Мой вопрос о направлении: Может ли JavaScript для страницы browser_action расширения браузера сохранить файл на устройстве пользователя на основе пользователя нажатием кнопки?

Я нацеливаюсь только на Chrome и Firefox и только на платформу Windows. Я добавлю поддержку Ma c позже, после портирования хост-процесса.

1 Ответ

0 голосов
/ 13 апреля 2020

Вы пробовали downloads.download()? https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/downloads/download Например:

const data = JSON.stringify({ boolean: true }, null, 2);
browser.downloads.download({
  url: URL.createObjectURL(new Blob([data], { type: 'application/json' })),
  saveAs: true,
  filename: 'file.json'
});
...