最近看到好几个人问这问题了,其实要实现并不难,而且还是跨浏览器的,但并不完美。
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-streambase64,"
+ Base64.encode(content))
}
}
}
</script>