Скачать текст как файл при minifest v3

В расширении с манифестом версии 2 можно было сделать так:

function downloadText(text, filename) {
  var url = URL.createObjectURL(new Blob([text], { type: 'text/plain' }))
  return chrome.downloads.download({ url, filename });
}

downloadText("Hi!", "hi.txt")

Но при третьей версии происходит ошибка

Uncaught TypeError: URL.createObjectURL is not a function
    at downloadText (<anonymous>:2:17)
    at <anonymous>:6:1

Что следует использовать вместо этого кода? Предполагается, что объём текста значительный.


Ответы (1 шт):

Автор решения: Арсен

Из практики могу сказать, что в v3 для скачивания можете использоваться напрямую метод chrome.downloads.download()

chrome.downloads.download({
  url: 'data:text/plain;charset=utf-8,' + encodeURIComponent(text),
  filename: 'hi.txt',
  saveAs: true
});

думаю этот метод должен сработать в вашем случае.

Есть ещё и второй метод chrome.offscreen я его не тестировал, но по документации указывает,что это тоже оптимальный метод для скачивания, там вроде создаёт другой файл и через него идёт скачивание, я не пробовал, можно и этот метод потыкать :)

→ Ссылка