• 締切済み

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>

みんなの回答

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.2

function dl(){ var a = document.createElement('a') a.href = URL.createObjectURL(new Blob([memo.value])) a.download = title.value+'.txt' a.click() }

noname#247307
noname#247307
回答No.1

保存ダイアログを出すのは無理ですね。保存時にダイアログが現れるのは、あれはブラウザが勝手に実装しているものであり、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')); }