如何将JavaScript字符串下载为文件
应用程序通过AJAX从服务器请求KML数据。此数据存储在javascript变量中,并显示在Google Earth插件中。
在javascript中,如何提供链接以下载存储在javascript变量中(作为字符串)的KML数据,而无需将请求返回服务器?
此链接:http :
//forum.mootools.net/viewtopic.php?id=9728
建议使用数据URI,但这可能无法满足我的需求而无法在足够多的浏览器中使用。可能最简单的方法是返回服务器再次获取数据以进行下载,但是好奇是否有人使用javascript来实现这一目的。
回答:
简短的答案:您不能并且仍然独立于平台。大多数浏览器只是不允许javascript操纵文件系统。
也就是说,您也许可以摆脱一些非常特定于平台的黑客攻击。例如,IE提供了execCommand函数,您可以使用该函数调用SaveAs。如果您在具有要保存的数据的IFrame内执行此操作,则可能会使其正常工作-
但仅适用于IE。其他选项(同样,我将在这里使用Microsoft特定的选项)包括此Silverlight
hack或ActiveX控件。
我认为,要获得完全的平台兼容性,您将不得不吸收它并提供服务器端下载选项。
[编辑]糟糕!去链接搜索时,我没有进行足够的尽职调查。事实证明,我链接到的Silverlight hack具有服务器端组件。看起来你很漂亮。
[Edit2]我在这里找到了execCommand的浏览器兼容性的不错摘要。尽管它为“
saveas”命令列出了问号,但毕竟这可能是一条不错的选择。值得一试吗?
[Edit3]好吧,我决定对我建议的方法进行概念验证,并且在IE中有了一些相当简单的东西。不幸的是,我在此过程中证明了这种方法不适用于Firefox,而且似乎也不适用于Chrome /
Safari。因此,这完全取决于平台。但这有效!这是完整的工作页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Javascript File Saver</title>
<script type="text/javascript">
function PageLoad() {
var fdoc = window.frames["Frame"].document;
fdoc.body.appendChild(fdoc.createTextNode("foo,bar,baz"));
}
function Save() {
var fdoc = window.frames["Frame"].document;
fdoc.execCommand("SaveAs", true);
}
</script>
</head>
<body onload="PageLoad();">
<h2>Javascript File Saver</h2>
<iframe id="Frame" style="width: 400px;">Noframe</iframe><br />
<button onclick="Save();">Save</button>
</body>
</html>
以上是 如何将JavaScript字符串下载为文件 的全部内容, 来源链接: utcz.com/qa/413782.html