在javascript中生成一些xml,提示用户保存
我想用JavaScript制作一个XML文档,然后显示一个保存对话框在javascript中生成一些xml,提示用户保存,javascript,save,Javascript,Save,我想用JavaScript制作一个XML文档,然后显示一个保存对话框 如果必须单击才能进行保存,则可以 如果我必须使用IE来实现这一点(我甚至根本不需要支持它),那就不好了。但是,Windows是一个必需的平台(因此,如果我只能在一个浏览器中执行此操作,那么Firefox或Chrome是首选浏览器) 如果我需要一个网络服务器,这是不好的。但反过来说,我不想要求JavaScript只在本地文件上运行,即提升权限——如果可能的话。也就是说,我希望在本地或*静态*主机上运行。但只要在本地就可以了 做这
如果这冒犯了任何人的感情(例如,不支持所有浏览器),我深表歉意。我基本上想编写一个离线应用程序,考虑到需求的复杂性和可用时间,Javascript/HTML/CSS似乎是最佳选择。然而,我有一个唯一的要求,那就是能够保存数据,在我选择这条开发路线之前,必须克服这些要求。您是否在寻找类似的东西
如果PHP还可以,那么If就容易多了。本地主机PHP服务器还可以吗?由于安全问题,Web传统上无法保存到硬盘。PHP可以推送文件,尽管它需要一个服务器 打印到PDF插件可用于所有浏览器。安装一次,永远打印到PDF。然后,您可以使用javascript或Flash调用打印函数 此外,如果您正在为internet访问不稳定的环境开发,请使用VB.NET或其他一些桌面语言 编辑:
您可以使用浏览器的打印功能。如果不深入了解您的具体需求,我不建议使用纯Javascript/HTML解决方案。从用户的角度来看,编写本机应用程序可能会获得最好的结果。但是,如果使用Javascript/HTML会更快,我建议使用承载轻量级web服务器的本地应用程序来提供您的内容。这样,您可以干净地处理文件保存服务器端,同时将大部分精力集中在前端应用程序上 您可以在Python或Ruby中编写web服务器代码,只需几行代码,无需第三方库。例如,请参见:
- -这一个非常简单,可以让您轻松地为所有HTML/CSS/JS文件提供服务器:
最后-根据谁将使用您的应用程序,您还可以选择将Python程序编译为,这样最终用户就不必在其机器上安装Python。Javascript不允许写入本地机器。你的问题类似于
我建议创建一个简单的桌面应用程序。使用IE,您可以使用document.execCommand,但我注意到IE不是一个选项 下面是一些看起来可能有帮助的东西,尽管它不会用SaveAs对话框提示 这个脚本怎么样 它基于Flash和jQuery,可以提示对话框将文件保存到计算机中
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
});
一种简单但奇怪的不需要任何闪存的方法是为其
href
创建。这甚至有很好的跨浏览器支持,不过对于IE来说,它必须至少是版本8,URI必须小于32k。在这个主题上,它看起来像是其他人。使用base64编码的数据URI,只有html&js才能实现这一点。您可以做的是使用js库将您想要保存的数据(在您的示例中是一个XML数据字符串)编码到base64中,如。然后将编码的字符串放入链接中,并将链接添加到DOM
使用我提到的库(以及jquery)的示例:
例子
//在此处包括jquery和jquery-base64(或您想要使用的任何库)
文件。写(“”);
…请记住将内容类型设置为类似于application/octet stream
,这样浏览器就不会试图打开它
警告:一些较旧的IE版本不支持base64,但您说这无关紧要,所以这对您来说应该很好。为什么不在客户端和服务器端使用混合闪存解决方案呢。大多数人都有flash,因此您可以默认为客户端,以节省服务器上的资源。我使用数据uri运行了一个测试,如果您设置的mime类型不正确,则可以在单击链接时强制用户保存数据。这里令人难以置信的丑陋警告是,您不能指定文件名。除非浏览器在保存下载时默认询问您保存下载的位置和名称,否则它只会在您的下载文件夹中保存为一个巨大的丑陋名称,您必须找到该文件夹,并使用xml扩展名重命名以查看。因此,这是一个非解决方案。如果您不想将JS文件作为本地引用,那么如果web服务器不是一个选项,它从何处提供服务?为什么必须从网页创建XML?你可以制作一个小而简单(没有GUI)的桌面应用程序。@Jonathan,想法是灵活性,理论上我可以将整个应用程序作为一个html
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
});
<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>