簡答:你不能,仍然是平臺獨立的。大多數瀏覽器只是不允許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