Как загрузить информацию, хранящуюся в моем расширении Chrome? - PullRequest
1 голос
/ 07 июня 2019

Я разрабатываю расширение для Chrome, где рабочий процесс выглядит следующим образом:

  • Пользователь просматривает Интернет и может сохранять ссылки. У меня есть сильные предпочтения хранить все ссылки локально, а не, скажем, общаться с внешним сервером.
  • пользователь может затем нажать кнопку в расширении, которая генерирует и загружает CSV-файл со всеми сохраненными ссылками до сих пор

Два вопроса:

  1. Как правильно хранить эти данные в нескольких сеансах?
  2. Как правильно создать файл и запросить загрузку?

Для 1 я планирую использовать chrome.storage.local.

Для 2 неясно, каков наилучший способ. Я рассматриваю возможность записи данных в options.html или popup.html, а затем вызываю chrome.downloads для загрузки этой страницы, но это похоже на массовый взлом.

Как правильно делать 1 и 2?

1 Ответ

2 голосов
/ 07 июня 2019
  1. Использование chrome.storage.local - правильный путь.
  2. Я использую этот фрагмент прямо из всплывающего окна, чтобы сохранить текстовые / json / csv файлы:
/**
 * @param data {String} what to save
 * @param extension {String} file extension
 */
function saveFile(data, extension = 'json') {
    const fileName = `export-file.${extension}`;

    const textFileAsBlob = new Blob([data], {type: 'text/plain'});
    const downloadLink = document.createElement('a');
    downloadLink.download = fileName;

    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.target = '_blank';
    downloadLink.click();

    return fileName;
}

Это сохранит файл на диск.И это не хакерский способ.

Обновление для # 2

Другой способ - передать URL base64 в API загрузок:

chrome.downloads.download({url: 'data:image/gif;base64,SEVMTE8gV09STEQh', filename: 'test.txt'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...