在IE6中下载Javascript生成的XML

在IE6中下载Javascript生成的XML,javascript,Javascript,我想使用Javascript让IE6下载一个文件。它将使用Javascript动态创建。此文件在Web服务器上不存在。下面是一个小例子: <!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" xml:lan

我想使用Javascript让IE6下载一个文件。它将使用Javascript动态创建。此文件在Web服务器上不存在。下面是一个小例子:

<!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" xml:lang="en" lang="en">
  <head>
    <script type="text/javascript">
function clicked() {
  var xml = "<data>Just for testing</data>";
  document.open("text/xml", "replace");
  document.write(xml);
}
    </script>
  </head>
  <body>
    <input type="button" value="Download" onclick="clicked();" />
  </body>
</html>

函数单击(){
var xml=“仅用于测试”;
打开(“文本/xml”、“替换”);
document.write(xml);
}

我不希望在浏览器窗口中加载xml,而是希望它能让IE6提示用户将数据下载到何处,这样就可以保存数据,而不必使用文件->另存为。有什么想法吗?

没有,这是不可能的。web浏览器严格不允许这样做,因为仅通过JavaScript将文件保存到磁盘的能力将非常危险,即使出现确认弹出窗口


编辑:多亏了其他答案,我发现(毫不奇怪)这种行为在某些IE版本中是可能的。

对于IE6,您应该能够在
文档之后使用。write()


这不是任何标准的一部分,只能在IE风格的浏览器中使用。

如果您的数据必须在客户端生成,那么您可以将其发回服务器,以便将其作为可下载文件返回。

我想应该是这样的。还有什么比点击链接并从服务器下载恶意内容更危险的呢?XSS+用户可能不需要点击,允许浏览器这样做是一种可怕的行为。然而,IE确实允许它通过object.execCommand进行访问——我并不十分惊讶它是唯一一个这样做的浏览器;)对于来自服务器的数据,浏览器将告诉您数据的位置。这是用于工作中的Intranet应用程序。我不会让网络上的普通人受这种无聊的影响;)没有服务器,这将从Intranet上的共享运行。我很想编写一个Rails应用程序来实现这一点,但不幸的是,这不是一个选项。我得将就一下,这似乎行得通。我是否有可能阻止浏览器也显示内容?“后退”按钮和“刷新”不会重新加载原始页面。您可以创建一个不可见或0×0 iframe,并将xml写入该文档而不是主文档。
document.execCommand('SaveAs',true,'file.xml');