Javascript: 保存文本文件的简单方法?

Javascript: a SIMPLE way to save a text file?

我愿意为用户提供保存 his/her 结果的机会,如网页上显示的那样。

使用浏览器的“另存为”是不行的,它会保存 html 代码或部分代码,而不是保存页面上显示的内容。即使选项设置为“另存为文本”。还有本地链接等

使用 localStorage 会更糟。想象一下告诉用户他的结果在隐藏目录中的某个地方并且 he/she 需要解码 sqlite 文件...

网上找的例子:

A) 太复杂了

B) 不工作

C) 只显示一点代码,剩下的让你猜

一些网站提供其页面的“打印友好”版本。单击一个按钮,我可以在一个新的 window 或选项卡中打开结果列表,并显示简洁的视图。然后用户可以将“select 全部”和“copy/paste”添加到 his/her 最喜欢的文本编辑器。并保存。

我想做得更好。我想要一个“保存结果”按钮,它会打开通常的对话框“你想把这个保存在哪里?”并提供例如 .txt 和 .rtf 格式之间的选择。

我读过的一些内容似乎暗示这是非法的。如果您可以另存为 .exe,我会理解安全风险。但另存为 .txt?


你可以这样做:
<a href="#" id="download">Download</a>

<script>
var fileName = "myfile.txt";
var fileContent = "Page content...";
var myFile = new Blob([fileContent], {type: 'text/plain'});

window.URL = window.URL || window.webkitURL;
var dlBtn = document.getElementById("download");

dlBtn.setAttribute("href", window.URL.createObjectURL(myFile));
dlBtn.setAttribute("download", fileName);
</script>

这将要求用户将名为“myfile.txt”的文件保存到他们想要的位置。文件的内容由您决定。

您可以重用 javascript windows 打印功能 onclick="window.print();"或者自己编写

const link = document.querySelector('a');
link.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent('insert your text here'));

link.setAttribute('download', 'res.txt');
<a>File</a>

在这里,我们使用 HTML 5 下载属性并对文本的 URI 组件进行编码