如何在Javascript中动态创建供下载的文档?
我正在编写一些Javascript代码,用于在客户端(通过)生成XML文档。我希望用户能够单击页面上的按钮,并被提示将该XML保存到新文件中。如果我正在生成XML服务器端,这将很容易,只需使按钮打开链接即可。但是XML是在客户端生成的 我已经想出了两个半途而废的技巧,部分灵感来自于。但两者都不完全有效。下面是一个带有嵌入式代码的演示HTML:如何在Javascript中动态创建供下载的文档?,javascript,browser,download,Javascript,Browser,Download,我正在编写一些Javascript代码,用于在客户端(通过)生成XML文档。我希望用户能够单击页面上的按钮,并被提示将该XML保存到新文件中。如果我正在生成XML服务器端,这将很容易,只需使按钮打开链接即可。但是XML是在客户端生成的 我已经想出了两个半途而废的技巧,部分灵感来自于。但两者都不完全有效。下面是一个带有嵌入式代码的演示HTML: <html><head><script> function getData() { return '<?xml
<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>
到目前为止,我所看到的最好的是,它需要Flash,但效果非常好: “一个小巧的JavaScript+Flash库,可在浏览器中动态生成和保存文件,无需与服务器交互。”
选中此项。如果Flash是一个选项,则Flash Player(版本10+)提供了从本地文件系统有限读取/写入文件的方法 看看这个:
好的,我的答案中链接到的API的包装器。很好。谢谢你的指点,那是一个很棒的小图书馆。自由软件许可证,相对容易使用。遗憾的是,它需要Flash,但如果Javascript无法应对,我并不感到惊讶。注意:下载通过闪存保存到磁盘,不通过浏览器的下载管理器。我将用一段代码片段来更新我的问题,演示这个库是如何工作的。上面的URL已经死了。看起来你可以在github上找到downloadify:这个较新的堆栈溢出问题有很多答案,不需要Flash。大多数涉及在DOM中构造
数据:
URL。
window.onload = function() {
Downloadify.create("dlify", {
data: getData(),
filename: "data.xml",
swf: 'media/downloadify.swf',
downloadImage: 'images/download.png',
width: 100, height: 30});};