可以使用 Blob
和 URL.createObjectURL
在浏览器中创建文件。所有最近的浏览器都支持此功能。
您无法直接保存您创建的文件,因为这会导致大量的安全问题,但您可以将其作为用户的下载链接提供。您可以在支持下载
属性的浏览器中通过链接的下载属性建议文件名。与任何其他下载一样,下载文件的用户将对文件名拥有最终决定权。
var textFile = null,
makeTextFile = function (text) {
var data = new Blob([text], {type: 'text/plain'});
// If we are replacing a previously generated file we need to
// manually revoke the object URL to avoid memory leaks.
if (textFile !== null) {
window.URL.revokeObjectURL(textFile);
}
textFile = window.URL.createObjectURL(data);
// returns a URL you can use as a href
return textFile;
};
下面是使用此技术保存 .textarea
如果要立即启动下载,而不是要求用户单击链接,则可以使用鼠标事件来模拟鼠标单击链接,就像 Lifecube 的答案所做的那样。我创建了一个使用此技术的更新示例。
var create = document.getElementById('create'),
textbox = document.getElementById('textbox');
create.addEventListener('click', function () {
var link = document.createElement('a');
link.setAttribute('download', 'info.txt');
link.href = makeTextFile(textbox.value);
document.body.appendChild(link);
// wait for the link to be added to the document
window.requestAnimationFrame(function () {
var event = new MouseEvent('click');
link.dispatchEvent(event);
document.body.removeChild(link);
});
}, false);