我在一个按钮中有这个代码:
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中,当我点击按钮时,我得到一个错误窗口,上面写着“传递给系统调用的数据区域太小了”。知道那是什么告诉我的吗?
答案 0 :(得分:0)
"数据:文本/ CSV;"是HTML5所以它不适用于IE8,我能够使用ActivexObject解决这个问题,但它将文件写入用户的桌面而没有弹出窗口
var csv = new ActiveXObject("scripting.FileSystemObject");
var fLoc = csv.CreateTextFile(fileName);
fLoc.WriteLine(csvData);
fLoc.close();