[JavaScript] 16 変数をファイルにして自動ダウンロード Blobオブジェクト

[M1 Mac, MacOS Ventura 13.3.1]

JavaScript内で生成した変数を他のプログラムで使えるようにするのは、C++ユーザーにとって最初はなかなか難易度が高いです。セキュリティ対策のため、JavaScript(非Node.js)はローカルファイルを作成して保存することができません。

今回はBlobオブジェクトを使ってファイル化しダウンロードするようにしました。

ChromeやEdgeでは自動的にダウンロードされ、Safariでは許可ボタンのクリックを経てダウンロードされます。つまりSafariでは自動化不可です。

ただ、モーダルダイアログにある許可ボタンの座標が分かれば、最近紹介したmacOSのApplication Servicesを使って自動クリックできそうな感じではあります。ややこしそうなので今回はやめておきます。

製作中のBBSブラウザで使用しているFl_WebViewはダウンロード機能を実装していないため、変数をファイル化してもダウンロードはできません。

// クリックしたaタグを含むpタグのIDを取得、ファイル化してダウンロード
function getID(element) {
    let id = element.closest('p').id;
    console.log("id = " + id);
  
    let data = new Blob([id], { type: 'text/plain' });
    let link = document.createElement('a');
    link.href = URL.createObjectURL(data);
    link.download = 'test.txt';
    link.click();
}