如何使用javascript生成txt格式文件保存到本地,要求跨浏览器支持,怎么做呢?

如题所述

最近看到好几个人问这问题了,其实要实现并不难,而且还是跨浏览器的,但并不完美。


IE 是通过 ActiveXObject,前提是浏览者的安全设置中允许此项且同意使用。


Firefox/Chrome/Safari/Opera 是通过 a 元素的 href 属性,加上 base64 数据来实现(data URI)。


下面的代码在 IE 6-9,Firefox 19,Chrome 26,Safari 5.0.5,Opera 12.15 测试通过。


【注意】base64 函数和完整代码在空间:hi.baidu.com/keneks/item/a8b10b04fd862f016c904813


<script type="text/javascript">
/* var Base64 = {}; */

window.onload = function() {
var save = document.getElementById("save");
// IE
if(/msie/i.test(navigator.userAgent)) {
save.onclick = function() {
var path = prompt("输入保存路径和文件名", "C:\\test.txt");
var content = document.getElementById("content").value;
content = content.replace(/\n/g, "\r\n");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s = fso.CreateTextFile(path, true);
s.WriteLine(content);
s.Close();
};
}
// Firefox/Chrome/Safari/Opera
else {
// 鼠标经过 a 的时候就开始 base64 编码
save.onmouseover = function() {
var content = document.getElementById("content").value;
this.setAttribute("href",
"data:application/octet-stream;base64,"
+ Base64.encode(content));
};
}
};
</script>

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-20
要在本地保存信息,用cookie才是正道。用javascript直接读写本地文件几乎是不可能的(否则就没人敢上网浏览网页了),更别说做到跨浏览器支持了。不过可以考虑在网站后台动态生成txt格式文件,提供给用户下载。