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

3

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

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

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

这段代码在Chrome、Safari和Firefox中都能完美运行
但在IE8中却不能,需要兼容IE8。
当我点击按钮调用上述代码时,它会将.csv文件下载到我的计算机上。
但是,在IE8中点击按钮后,它会在地址栏中打开一个新的IE8窗口,并不会下载任何内容(也不会提示下载)。
很遗憾,我必须要兼容IE8。怎样才能让它在IE8中也能正常工作呢?
编辑:我必须避免向服务端发起任何额外的调用。所有操作必须在客户端完成。目前,该代码在除IE8(和可能的IE9)之外的所有浏览器中都能正常工作。
编辑2:当我将最后一行更改为“document.location.href= encodedUri;”时,它仍然能在其他所有浏览器中正常工作,但在IE8中,当我点击按钮后,会弹出一个错误窗口,显示“传递给系统调用的数据区域太小。”你知道这是什么意思吗?

在Chrome中,这被阻止为一个弹出窗口(至少在v35版本中是这样的)。 - Warpling
1个回答

0
"

"data:text/csv;"是HTML5的,所以它在IE8上不起作用,我可以使用ActivexObject来解决这个问题,但它会将文件写入用户的桌面而没有弹出窗口。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接