今までブラウザの拡張機能とかは作ったことがないのですが、ふと拡張機能からファイルへの書き込み方法を知りたくなりました。
理由?そんな野暮なことは聞いちゃいけません。
どうやるの?
リファレンスを見てみると、io/fileというローレベルのAPIがあって、これを使えばまさに希望通りのことができそう。ただし。
注意書きにこんな文言が。
これはFirefoxの古い技術だから、新しいアドオン作るときは使うなよ!絶対使うなよ!なるほど、使えということか。
Firefox57以降は拡張機能用のAPIとしてWebExtensionsしか使えなくなるそうな。
そういえば、新しいFirefoxでは拡張機能が軒並みお亡くなりになるという話をちらほら聞いたことがあると思ったらこういうことだったのか( ・᷄ὢ・᷅ )
他に手はない?
もう一度リファレンスを見てみると、downloadsというものを発見。なんか名前からしてこれっぽいかも!ただし、よく見たらURLを指定してWeb上にあるものをダウンロードする機能のようす…
しかし、諦めない。
めげずにいろいろ検索してみると、こんな記事が。
var csv = 'foo,bar,baz' var blob = new Blob([csv], {type: "text/csv;charset=utf-8"}) chrome.downloads.download({ 'url': URL.createObjectURL(blob), 'filename': 'file.csv', })なるほど、
Blob
を無理やりURLにすれば保存できるのか。かなり無理やり感があるし保存できる場所も限られてるみたいだけど、最低限やりたいことはできるみたいだから今度試してみよう。あ、言っときますけど今回の記事は完全なる未検証ですので。
とりあえずやりたいことができた→とりあえず検索してみた→とりあえずそれっぽい記事があったからメモしてみた というだけです。あとでちゃんと検証結果も報告しますけどね。
0 件のコメント:
コメントを投稿