3

我在一个按钮中有这个代码:

var csvContent = "data:text/csv;charset=utf-8,";
csvContent += myCSVcontent;

var encodedUri = encodeURI(csvContent);
window.open(encodedUri);

这在 Chrome、Safari 和 Firefox 中完美运行。
- 但不是 IE8 - 我需要 Internet Explorer 8 兼容性。

当我单击调用上面代码的按钮时,它将 .csv 文件下载到我的计算机上。
但是,当我单击 IE8 中的按钮时,它会打开一个新的 IE8 窗口,其中包含地址栏中的所有 csv 内容,并且不会下载(或要求下载)任何内容。

不幸的是,我必须具有 IE8 兼容性。我怎样才能使这项工作?

编辑:我必须避免对服务器的任何额外调用。一切都需要在客户端发生。这目前适用于除 IE8(可能还有 IE9)之外的所有浏览器。

Edit2:当我将最后一行更改为“document.location.href=encodedUri;”时 它仍然可以在所有其他浏览器上运行,但是在 IE8 中,当我单击该按钮时,我得到一个错误窗口,上面写着“传递给系统调用的数据区域太小”。知道那告诉我什么吗?

4

1 回答 1

0

“数据:文本/csv;” 是 HTML5,所以它不适用于 IE8,我可以使用 ActivexObject 解决这个问题,但是它将文件写入用户的桌面并且没有弹出窗口

var csv = new ActiveXObject("scripting.FileSystemObject");
var fLoc = csv.CreateTextFile(fileName);
fLoc.WriteLine(csvData);
fLoc.close();
于 2014-11-05T19:55:39.513 回答