我正在寫一些Javascript代碼,在客戶端生成一個XML文檔(通過Google Earth plugin)。我希望用戶能夠單擊頁面上的按鈕,並提示將該XML保存到新文件。如果我生成XML服務器端,這很容易,只需使按鈕打開鏈接。但XML是在客戶端生成的。如何動態創建一個文檔以便在Javascript中下載?
我想出了一些半工作的黑客,其中部分原因是this StackOverflow question。但既不完全工作。這裏是嵌入代碼演示HTML:
<html><head><script>
function getData() { return '<?xml version="1.0" encoding="UTF-8"?><doc>Hello</doc>'; }
function dlDataURI() {
window.open("data:text/xml;charset=utf-8," + getData());
}
function dlWindow() {
var w = window.open();
w.document.open();
w.document.write(getData());
w.document.close();
}
</script><body>
<div onclick="dlDataURI()">Click for Data URL</div>
<div onclick="dlWindow()">Click for Window</div>
</body></html>
的dlDataURI()版本的Firefox在Chrome在IE的偉大工程,不良(不能保存),而不是在所有。 Window()版本在Firefox和IE中運行正常,在Chrome中效果不佳(無法保存,HTML內嵌XML)。這兩個版本都沒有提示用戶下載,它總是打開一個試圖顯示XML的新窗口。
有沒有一種很好的方式來做我想要的客戶端Javascript?我想在今天的瀏覽器上工作,理想的是Firefox,MSIE 8和Chrome。
更新與樣品Downloadify代碼
window.onload = function() {
Downloadify.create("dlify", {
data: getData(),
filename: "data.xml",
swf: 'media/downloadify.swf',
downloadImage: 'images/download.png',
width: 100, height: 30});};
這個新堆棧溢出的問題有很多,不需要閃存的答案。大多數涉及在DOM中構建'data:'URL。 https://stackoverflow.com/questions/19721439/download-json-object-as-a-file-from-browser – Nelson 2018-01-15 17:55:16