首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在javascript中生成一些xml,提示用户保存

在javascript中生成一些xml,提示用户保存
EN

Stack Overflow用户
提问于 2010-02-09 09:37:46
回答 8查看 18K关注 0票数 16

我想在JavaScript中创建一个XML文档,然后出现一个保存对话框。

  1. 如果他们必须在保存之前单击,这是可以的。
  2. 如果我必须使用IE来实现这一点,这是不好的(我甚至根本不需要支持它)。然而,视窗是一个必需的平台(所以如果我只能在一个浏览器中做到这一点,火狐或Chrome是首选的浏览器)。
  3. 如果我需要一个web服务器,这是*不可以的。但反过来,如果可能的话,我不想要求JavaScript仅在本地文件上运行,即提升权限。也就是说,我希望在本地或在*静态*主机上运行。但只在局部是可以的。
  4. ,为了做到这一点,你可以全力以赴。文件不会很大,但互联网访问可能存在,或者不稳定,或者根本不可能--参见(3)。

到目前为止,我看到的唯一想法是将XML保存到iframe并保存文档--但似乎只能在IE中做到这一点?另外,我可以构造一个数据URI并将其放在一个链接中。这里我担心的是它只会在窗口中打开XML文件,而不是提示用户保存它。

我知道,如果我要求JavaScript是本地的,我可以提高权限,直接保存文件(或者希望出现一个保存对话框)。然而,我更喜欢不需要提升权限的解决方案(即使是只有Firefox3.6的解决方案)。

如果这冒犯了任何人(例如,不支持所有浏览器),我深表歉意。我基本上想写一个离线应用程序,考虑到需求的复杂性和可用的时间,Javascript/HTML/CSS似乎是最好的候选者。然而,我有一个唯一的要求,那就是能够保存数据,在我选择这条开发路线之前,必须克服这些要求。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-02-20 13:07:30

这个downloadify脚本怎么样?

它是基于Flash和jQuery的,可以在对话框中提示您将文件保存到您的计算机中。

代码语言:javascript
复制
Downloadify.create('downloadify',{
  filename: function(){
    return document.getElementById('filename').value;
  },
  data: function(){ 
    return document.getElementById('data').value;
  },
  onComplete: function(){ 
    alert('Your File Has Been Saved!'); 
  },
  onCancel: function(){ 
    alert('You have cancelled the saving of this file.');
  },
  onError: function(){ 
    alert('You must put something in the File Contents or there will be nothing to save!'); 
  },
  swf: 'media/downloadify.swf',
  downloadImage: 'images/download.png',
  width: 100,
  height: 30,
  transparent: true,
  append: false
});
票数 5
EN

Stack Overflow用户

发布于 2012-04-01 07:31:14

使用base64编码的数据URI,只有html & js才能做到这一点。您可以做的是使用像jquery-base64 by carlo这样的js库将您想要保存的数据(在本例中是一个XML数据字符串)编码到base64中。然后将编码后的字符串放入链接中,并将链接添加到DOM。

使用我提到的库(以及jquery)的示例:

代码语言:javascript
复制
<html>
<head>
    <title>Example</title>
</head>
<body>
    <script>
        //include jquery and jquery-base64 here (or whatever library you want to use)
        document.write('<a href="data:application/octet-stream;base64;charset=utf-8,' + $.base64.encode( "this is a example, which requires the jquery-base64 library to work... replace this text with your xml" ) + '">click to make save dialog</a>');
    </script>
</body>
</html>

...and记得让内容类型类似于application/octet-stream,这样浏览器就不会试图打开它。

警告:一些较旧的IE版本不支持base64,但您说这无关紧要,所以这对您来说应该很好。

票数 4
EN

Stack Overflow用户

发布于 2010-02-19 10:22:20

不允许Javascript写入本地计算机。您的问题类似于this one

我建议创建一个简单的桌面应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2226192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档