【问题标题】:execcommand("SaveAs",null,"file.csv") is not working in IE8execcommand("SaveAs",null,"file.csv") 在 IE8 中不起作用
【发布时间】:2011-01-31 17:29:02
【问题描述】:
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 中工作

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

帮帮我!!!提前谢谢

【问题讨论】:

标签: javascript


【解决方案1】:

问题似乎是由 Windows XP 中已修复但在我的 Windows 7 中显然未修补的旧错误引起的。来自http://support.microsoft.com/kb/929863

由于 ExecCommand 函数的限制而出现此问题。当您运行使用 ExecCommand 函数和 SaveAs 命令的脚本时,该脚本只能保存文本文件类型的文件。

果然,将文件扩展名更改为“.txt”,然后在 IE8 中神奇地工作。

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

【讨论】:

  • 正如你所说,当我们将其保存为“txt”时它正在工作。如果你们发现任何技巧,那么您可以发布这个想法,因为我必须从客户端完成它!提前谢谢
  • 4umi.com/web/javascript/filewrite.php 看看这个链接,如果可能的话帮助我
  • @Anbu:你是从本地文件系统运行页面并且只在 IE 中运行吗?如果是这样,您可以使用 ActiveX 控件(即 FileSystemObject)来编写 CSV 文件。请参阅msdn.microsoft.com/en-us/library/6ee7s9w2(VS.85).aspx 了解更多信息。
【解决方案2】:

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

例如对于 .csv 文件:

Windows Registry Editor Version 5.00

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

@MICROSOFT:真丢脸;问题似乎仍未修复:-)

【讨论】:

  • 它就像一个魅力。我有同样的问题,但在我的情况下,它在某些系统中工作,在某些系统中不工作。
【解决方案3】:

如果您可以在 http 标头集中使用 PHP 或 .NET 或 Java 或其他东西来处理服务器端:

Content-Disposition: attachment; filename=file.csv

很遗憾,您无法通过 JavaScript 做到这一点。

【讨论】:

  • 感谢您的及时回复!!但我不能在服务器端做任何事情,所以请在客户端给出一个解决方案。是否有任何特定原因使其无法在 IE8 中运行?
  • 试试Andy E的建议,把文件扩展名改成txt。
猜你喜欢
  • 2015-05-24
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2012-05-23
  • 2015-06-07
相关资源
最近更新 更多