求助:如何使用JavaScript写txt或JSON文件

lawrendc 2018-09-20 09:23:52
各位大侠,请教下如何使用JavaScript写txt或JSON文件,就是想将JSON数据或者网页上的Table保存到一个txt或者JSON文件里,之前试过网上介绍的var fso = new ActiveXObject(Scripting.FileSystemObject); 提示是找不到变量ActiveXObject,无论括号里加不加引号都不行,是浏览器和系统不支持吗?现在用Mac在做,今后想可以在Mac和手机上使用该功能,谢谢
...全文
471 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员的键盘 2018-09-21
  • 打赏
  • 举报
回复
引用 7 楼 qq_35955916 的回复:
[quote=引用 5 楼 jslang 的回复:]
FileSystemObject 只有windows的ie支持,而且安全限制极高。
MAC系统,可以用 localStorage 本地存储保存数据,
也可以用js生成文件让用户下载:
function downloadFile(fileName, content){
var aLink = document.createElement('a');
var blob = new Blob([content]);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错, 感谢 Barret Lee 的反馈
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}

当然最好的还是直接提交数据到服务器端保存


提点小注意

var blob = new Blob(["\ufeff" + content], {
type: 'application/vnd.ms-excel'
}); //new Blob(["\ufeff"+content],{ type: 'application/vnd.ms-excel'}); type 目前发现如果不指定,在ie裡面下載到的文件是無類型的,开头加上"\ufeff" 是为了防止乱码
var link = document.createElement("a");
link.innerHTML = fileName;
link.download = fileName;
link.href = URL.createObjectURL(blob);
let evt = document.createEvent('MouseEvents');
evt.initEvent('click', true, true);
link.dispatchEvent(evt);

readAsText(file, 'gb2312')//读取文档 如果有中文乱码 加上编码[/quote]
//new Blob(["\ufeff"+content],{ type: 'application/vnd.ms-excel'}); type 目前发现如果不指定,在ie裡面下載到的文件是無類型的,开头加上"\ufeff" 是为了防止乱码
程序员的键盘 2018-09-21
  • 打赏
  • 举报
回复
引用 5 楼 jslang 的回复:
FileSystemObject 只有windows的ie支持,而且安全限制极高。
MAC系统,可以用 localStorage 本地存储保存数据,
也可以用js生成文件让用户下载:
function downloadFile(fileName, content){
var aLink = document.createElement('a');
var blob = new Blob([content]);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错, 感谢 Barret Lee 的反馈
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}

当然最好的还是直接提交数据到服务器端保存


提点小注意

var blob = new Blob(["\ufeff" + content], {
type: 'application/vnd.ms-excel'
}); //new Blob(["\ufeff"+content],{ type: 'application/vnd.ms-excel'}); type 目前发现如果不指定,在ie裡面下載到的文件是無類型的,开头加上"\ufeff" 是为了防止乱码
var link = document.createElement("a");
link.innerHTML = fileName;
link.download = fileName;
link.href = URL.createObjectURL(blob);
let evt = document.createEvent('MouseEvents');
evt.initEvent('click', true, true);
link.dispatchEvent(evt);

readAsText(file, 'gb2312')//读取文档 如果有中文乱码 加上编码
lawrendc 2018-09-20
  • 打赏
  • 举报
回复
那请问Mac下用哪种方式呢? 其实我主要是想在手机浏览器上使用,主要是安卓手机
讨厌走开啦 2018-09-20
  • 打赏
  • 举报
回复
ActiveXObject只有IE支持,mac下不支持。
lawrendc 2018-09-20
  • 打赏
  • 举报
回复
谢谢,我在Mac下的Safari读TXT文件是没问题的,但写就不行,有没有这种现成的控件可以实现的呢?
Hello World, 2018-09-20
  • 打赏
  • 举报
回复
这个方法在IE下有可能行得通,其他的就不行了,HTML5有本地存储,或者写Cookie看看能不能满足需求。
直接生成指定文件受浏览器安全限制,不允许的。
lawrendc 2018-09-20
  • 打赏
  • 举报
回复
好的,我试试,谢谢
天际的海浪 2018-09-20
  • 打赏
  • 举报
回复
FileSystemObject 只有windows的ie支持,而且安全限制极高。 MAC系统,可以用 localStorage 本地存储保存数据, 也可以用js生成文件让用户下载:
function downloadFile(fileName, content){
    var aLink = document.createElement('a');
    var blob = new Blob([content]);
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错, 感谢 Barret Lee 的反馈
    aLink.download = fileName;
    aLink.href = URL.createObjectURL(blob);
    aLink.dispatchEvent(evt);
}
当然最好的还是直接提交数据到服务器端保存

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧