我有一个网页,其中有一个按钮,当点击它时,生成一个(通过从json转换)csv文件,由浏览器下载。它基本上使用了这个jsfiddle的逻辑。这一切都适用于Chrome,但在IE中,没有任何反应。
var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);
// Now the little tricky part.
// you can use either>> window.open(uri);
// but this will not work in some browsers
// or you will not get the correct file extension
//this trick will generate a temp <a /> tag
var link = document.createElement("a");
link.href = uri;
//set the visibility hidden so it will not effect on your web-layout
link.style = "visibility:hidden";
link.download = fileName + ".csv";
//this part will append the anchor tag and remove it after automatic click
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
问题似乎是Internet Explorer中不存在锚标记的download属性。我一直在看很多文章和SO帖子,但我没有找到一个可以在页面中使用的连贯解决方案。
如何在IE中实现jsfiddle的代码?
答案 0 :(得分:2)
这是我过去使用过的。这处理IE和非IE。
var filename = "file.txt";
var data = "some data";
var blob = new Blob([data], { type: 'text/csv' });
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveBlob(blob, filename);
}
else {
var elem = window.document.createElement('a');
elem.href = window.URL.createObjectURL(blob);
elem.download = filename;
document.body.appendChild(elem);
elem.click();
document.body.removeChild(elem);
}