【发布时间】:2011-01-30 04:16:41
【问题描述】:
我正在编写一些在客户端生成 XML 文档的 Javascript 代码(通过Google Earth plugin)。我希望用户能够单击页面上的按钮并被提示将该 XML 保存到新文件中。如果我正在生成 XML 服务器端,这将很容易,只需使按钮打开链接。但是 XML 是在客户端生成的。
我想出了几个成功的技巧,部分灵感来自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 中运行不佳(无法保存,XML 嵌入在 HTML 中)。这两个版本都不会提示用户下载,它总是会打开一个新窗口来尝试显示 XML。
有没有一种好方法可以在客户端 Javascript 中做我想做的事情?我希望它能够在当今的浏览器中运行,最好是 Firefox、MSIE 8 和 Chrome。
使用示例下载代码更新
window.onload = function() {
Downloadify.create("dlify", {
data: getData(),
filename: "data.xml",
swf: 'media/downloadify.swf',
downloadImage: 'images/download.png',
width: 100, height: 30});};
【问题讨论】:
-
这个较新的 Stack Overflow 问题有很多不需要 Flash 的答案。大多数涉及在 DOM 中构造
data:URL。 stackoverflow.com/questions/19721439/…
标签: javascript browser download