execcommand(“SaveAs”,null,“file.csv”)在IE8中不起作用

时间:2010-03-25 13:18:56

标签: javascript

var doc = w.document;
doc.open('application/CSV','replace');
doc.charset = "utf-8";
doc.write("all,hello");
doc.close();

if(doc.execCommand("SaveAs",null,"file.csv")) {
    window.alert("saved ");
}else {
    window.alert("cannot be saved");
}

不在IE 8中工作

但是在IE 6中已经开始了

有什么问题?警告“无法保存”

帮助我!!!提前谢谢

3 个答案:

答案 0 :(得分:10)

这个问题似乎是由Windows XP中修复但在我的Windows 7中显然没有修补的旧错误造成的。来自http://support.microsoft.com/kb/929863

  

由于 ExecCommand 功能的限制,会出现此问题。当您运行使用 ExecCommand 功能以及 SaveAs 命令的脚本时,脚本只能保存文本文件类型的文件。

果然,将文件扩展名更改为“.txt”并在IE8中神奇地观看它。

我想到的唯一解决方法是让服务器端语言创建CSV文件,并将其作为下载服务(使用Content-disposition: attachment标题)。

答案 1 :(得分:3)

我知道这是一个非常古老的主题,但我也遇到了这个问题。 您可以通过将以下值(取决于下载的文件的扩展名)添加到注册表来修复它。

E.g。对于.csv文件:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.csv]
"PerceivedType"="document"

@MICROSOFT:对你感到羞耻;问题似乎仍未修补: - )

答案 2 :(得分:0)

如果您可以使用PHP或.NET或Java等处理服务器端,请在http标头集中设置:

Content-Disposition: attachment; filename=file.csv

遗憾的是,你无法用JavaScript做到这一点。