javascript - 如何使用 Javascript 创建和下载 csv 文件?

标签 javascript csv internet-explorer-8 internet-explorer-9 encodeuricomponent

我在按钮中有这段代码:

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 中,当我单击该按钮时,出现一个错误窗口,显示“传递给系统调用的数据区域太小”。知道这告诉我什么吗?

最佳答案

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

var csv = new ActiveXObject("scripting.FileSystemObject");
var fLoc = csv.CreateTextFile(fileName);
fLoc.WriteLine(csvData);
fLoc.close();

关于javascript - 如何使用 Javascript 创建和下载 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20843219/

相关文章:

javascript - 如何在 Materialise Framework Parallax 中使图像变大

javascript - 在对象数组上使用下划线的 “difference” 方法

ruby - 识别特定 CSV 输出中的重复项

java - 如何在不使用引号字符的分隔文件上使用 Super CSV?

jquery - jsTree 在 IE8 上卡在 "loading"

javascript - 字符串替换

javascript - 在 javascript 中调用 javascript onmouseout 事件

php - 使用分号作为分隔符从 MySQL 表使用 PHP 创建 csv 输出

javascript - 使用 Angular js 删除 IE8 中的#params

html - IE8 z-index 和 body 不兼容 :after