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 内容效果图
