- 締切済み
JSの保存ダイアログについて
以下のコードは簡易メモ的なものです そこに書き込まれた内容を保存できるようにしたいのですがfunction dl()には何を書けばいいのでしょうか? 調べてみて function dl(C:\){ var a = document.createElement('a'); a.href = C:\; a.setAttribute('dl', name || 'noname'); a.dispatchEvent(new CustomEvent('click')); } としてみたのですがこれを書き込むと保存ダイアログはおろかtextの保存もできなくなってしまいます <input type="text" id="title"><br><br> <textarea id="memo" rows="8" cols="50"></textarea><br><br> <input type = "button" value="SAVE" onclick="dl();"> <script> var title = document.getElementById("title"); var memo = document.getElementById("memo"); window.onload = function() { var body_title = localStorage.getItem("title"); if (body_title != null) title.value = body_title; var body_memo = localStorage.getItem("memo"); if (body_memo != null) memo.value = body_memo; } title.onchange = function() { localStorage.setItem("title",title.value); } memo.onchange = function() { localStorage.setItem("memo",memo.value); } function dl(){ } </script>
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- b0a0a
- ベストアンサー率49% (156/313)
function dl(){ var a = document.createElement('a') a.href = URL.createObjectURL(new Blob([memo.value])) a.download = title.value+'.txt' a.click() }
保存ダイアログを出すのは無理ですね。保存時にダイアログが現れるのは、あれはブラウザが勝手に実装しているものであり、JavaScriptなどから制御できるものではありません。(やりようがないことはないと思いますが、ブラウザがバージョンアップして仕様が変われば動かなくなるようなシロモノになります) 単にテキストファイルに保存するだけならこんな感じ。たいていはダウンロードフォルダにファイルが自動保存されます。 function dl(){ var fname = document.getElementById("title").value; var value = document.getElementById("memo").value; var a = document.createElement('a'); a.href = "data:text/plain," + encodeURIComponent(value); a.download = fname + ".txt"; a.dispatchEvent(new CustomEvent('click')); }