function saveFile() {
var data = document.querySelector('#text').value;
// var data = '自定义的数据内容,可以是服务端返回滴!';
var name = 'cdk.txt';
exportRaw(data, name);
}
function exportRaw(data, name) {
var urlObject = window.URL || window.webkitURL || window;
var export_blob = new Blob([data]);
var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
save_link.href = urlObject.createObjectURL(export_blob);
save_link.download = name;
save_link.click();
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>导出数据为txt文件</title>
</head>
<body>
<textarea name="" id="text" cols="30" rows="10">这里输入的数据将保存为txt中</textarea>
<button id="save" type="button">保存</button>
<script>
document.querySelector('#save').addEventListener('click', saveFile);
function saveFile() {
// var inValue = document.querySelector('#text').value;
var inValue = '自定义的数据内容,可以是服务端返回滴!';
exportRaw('cdk.txt', inValue);
}
function exportRaw(name, data) {
// Window.URL 属性返回一个对象,它提供了用于创建和管理对象URLs的静态方法。它也可以作为一个构造函数被调用来构造 URL 对象。
var urlObject = window.URL || window.webkitURL || window;
// Blob 对象表示一个不可变、原始数据的类文件对象。
var export_blob = new Blob([data]);
// 创建一个具有指定的命名空间URI和限定名称的元素。
var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
// URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。
// 这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。
save_link.href = urlObject.createObjectURL(export_blob);
// HTMLAnchorElement.download 属性是一个 DOMString ,表明链接的资源将被下载,而不是显示在浏览器中。
// HTMLAnchorElement 接口表示超链接元素,并提供一些特别的属性和方法(除了那些继承自普通 HTMLElement对象接口的之外)以用于操作这些元素的布局和显示。
// DOMString 是一个UTF-16字符串。由于JavaScript已经使用了这样的字符串,所以DOMString 直接映射到 一个String。就是一个普通的字符串
save_link.download = name;
console.log(save_link); // 可以发现这是个 a 元素
// fakeClick(save_link); // 模拟点击事件
save_link.click();
}
function fakeClick(obj) {
// createEvent 创建一个新的事件(Event),随之必须调用自身的 init 方法进行初始化。
// var ev = document.createEvent("MouseEvents");
// initMouseEvent 已废弃,不建议使用,用 MouseEvent() 代替
// ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
// MouseEvent 接口指用户与指针设备( 如鼠标 )交互时发生的事件。使用此接口的常见事件包括:click,dblclick,mouseup,mousedown。
// var ev = new MouseEvent(typeArg, mouseEventInit); // 生成一个新的 MouseEvent 对象
var ev = new MouseEvent("click")
// 向一个指定的事件目标派发一个事件, 并以合适的顺序同步调用目标元素相关的事件处理函数。
obj.dispatchEvent(ev);
}
</script>
</body>
</html>
导出 textarea 内容效果图
