JavaScriptでファイルダウンロード処理を実現する
毎回調べるのが面倒なのでメモ。
var downloadAsTextFile = function(fileName, content) { var bom = new Uint8Array([0xEF, 0xBB, 0xBF]); var blob = new Blob([bom, content]); var url = window.URL || window.webkitURL; var blobURL = url.createObjectURL(blob); var a = document.createElement('a'); a.download = fileName; a.href = blobURL; a.click(); }; var downloadAsFile = function(fileName, content) { var a = document.createElement('a'); a.download = fileName; a.href = 'data:application/octet-stream,'+encodeURIComponent(content); a.click(); };
https://qiita.com/wadahiro/items/eb50ac6bbe2e18cf8813
var content = ""; $(".transaction_list").each(function(i, e) { a = $(".amount ~ td:first", e).clone(); a.children().empty(); ary = [ $("#user_asset_act_id", e).val(), $("#user_asset_act_large_category_id", e).val(), $("#user_asset_act_middle_category_id", e).val(), $("#user_asset_act_sub_account_id_hash", e).val(), $("#user_asset_act_table_name", e).val(), $("#user_asset_act_is_income", e).val(), $("#user_asset_act_is_target", e).val(), $("#user_asset_act_memo", e).val(), $(".date", e).attr("data-table-sortable-value"), $(".date span", e).text(), $(".content span", e).text(), $(".amount span.offset", e).text(), a.text().trim(), $(".amount ~ td:first div", e).text(), $(".amount ~ td:first", e).attr("data-original-title"), $(".lctg a", e).text().trim(), $(".mctg a", e).text().trim(), ]; for (var j = 0, m = ary.length; j < m; ++j) { content += '"' + ("" + ary[j]).replace('"', '""') + '"'; if (j !== m) { content += ','; } } content += '\n'; }); var downloadAsTextFile = function(fileName, content) { var bom = new Uint8Array([0xEF, 0xBB, 0xBF]); var blob = new Blob([bom, content]); var url = window.URL || window.webkitURL; var blobURL = url.createObjectURL(blob); var a = document.createElement('a'); a.download = fileName; a.href = blobURL; a.click(); }; downloadAsTextFile("hoge.csv", content);