简答:你不能,仍然是平台独立的。大多数浏览器只是不允许JavaScript来操纵文件系统。
也就是说,你可能会得到一些非常特定于平台的黑客攻击。例如,IE提供了execCommand函数,您可以使用它来调用SaveAs。如果你在一个有你想保存的数据的IFrame中做这件事,你可能会得到它的工作 - 但只在IE浏览器。其他选项(再次,我要在此处具体介绍Microsoft)包括this Silverlight hack或ActiveX控件。
我认为,为了获得完整的平台兼容性,您只需要将其吸收并提供服务器端下载选项。
[编辑] 哎呀!当我去找链接时,我没有做足够的尽职调查。事实证明,我链接到的Silverlight黑客有一个服务器端组件。看起来你很漂亮SOL。
[编辑2] 我发现了execCommand here的浏览器兼容性的一个很好的总结。虽然它列出了“saveas”命令的问号,但也许这对你来说可能是一条好路线。值得一试,也许?那么,我决定做一个我建议的方法的概念证明,并且我在IE中获得了相当简单的工作。不幸的是,我在这个过程中证明了这种方法will not work for Firefox,并且在Chrome/Safari中似乎也不起作用。所以它非常依赖于平台。但它的作品!这里有一个完整的工作页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Javascript File Saver</title>
<script type="text/javascript">
function PageLoad() {
var fdoc = window.frames["Frame"].document;
fdoc.body.appendChild(fdoc.createTextNode("foo,bar,baz"));
}
function Save() {
var fdoc = window.frames["Frame"].document;
fdoc.execCommand("SaveAs", true);
}
</script>
</head>
<body onload="PageLoad();">
<h2>Javascript File Saver</h2>
<iframe id="Frame" style="width: 400px;">Noframe</iframe><br />
<button onclick="Save();">Save</button>
</body>
</html>
但是,在Firefox中,您可以使用MIME类型为`application/octet-stream`的数据URL。这种MIME类型基本上意味着“二进制”,Firefox唯一能做的就是提供另存为对话框。 但是,Chrome仍然存在。 – panzi 2010-08-28 16:06:54
@panzi:感谢您的输入。只要我有机会,我会尽力检查出来。 – Randolpho 2010-08-28 19:46:48