在Firefox中保存为对话框

时间:2011-11-10 04:37:07

标签: javascript html dojo

我想在用户点击HTML按钮时显示“另存为”对话框。 我正在使用DOJO和JavaScript。 在IE中,document.exec来拯救,但在Firefox中,需要在文件系统中进行更改才能使用NSI。

任何想法都将受到赞赏。

3 个答案:

答案 0 :(得分:1)

您可以强制浏览器使用数据网址下载一些数据:

content = "This is the text for downloading";
window.location.href = "data:application/octet-stream,"+
          encodeURIComponent(content); 

这个问题的主要问题是用户将无法选择文件名,生成的文件名是一些随机哈希值。如果您不介意使用Flash,可以使用Downloadify,这样可以更好地控制“保存”对话框。

答案 1 :(得分:0)

将HTML按钮href为未知文档类型。说 FileName.xxxblah

这将自动触发另存为对话框。

答案 2 :(得分:0)

这并不是你想要的,但我所知道的唯一可靠方式是在服务器上创建一个服务器端脚本,它将发送正确的标头。在PHP中,您就是这样做的:

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="mydocument.csv";' );
header('Content-length: '.(int)strlen($csvData));

print($csvData);

Content-type是文档的“mime类型”,为了与某些浏览器兼容,重要的是它与文件名的扩展名完全匹配。

Content-Disposition: attachment指示浏览器下载页面,即使它通常不会为该mime类型执行此操作,并且您能够提供文件名。

Content-length是下载的大小,这是可选的,但如果您希望用户看到下载的进度条,则必须提供。

某些浏览器会显示另存为对话框,而其他浏览器只会将文件保存到用户首选的下载文件夹中。你无法控制将要发生的事情。