在Safari

时间:2015-04-22 13:51:12

标签: javascript jquery csv safari

我在下方有代码生成下载链接,以便用户可以在我的网站上下载.csv文件。

var link = document.createElement("a");
link.id = "csvDwnLink";
window.URL = window.URL || window.webkitURL;

var csv = "\ufeff" + CSV,
    blob = new window.Blob([csv], {type: 'text/csv, charset=UTF-8'}),
    csvUrl = window.URL.createObjectURL(blob),
    filename = 'export.csv';

$("#csvDwnLink").attr({'download': filename, 'href': csvUrl});
$('#csvDwnLink')[0].click();
document.body.removeChild(link);

我希望用户可以点击csvUrl的下载链接下载cvs文件 它适用于铬。但是,当我使用Safari单击相同的链接时,它将直接显示选项卡中csv文件的内容。

如何解决此问题,以便safari显示保存文件窗口,用户可以选择保存文件的路径,而不是在单击下载链接时直接显示cvs文件的内容?登记/> 希望有人能给我一些建议或替代方法 提前谢谢!

==已更新==
在这里找出解决方案
solution 1solution 2

代码将是:

var link = document.createElement("a");
link.id = "csvDwnLink";

document.body.appendChild(link);
window.URL = window.URL || window.webkitURL;
var csv = "\ufeff" + CSV,
    csvData = 'data:attachment/csv;charset=utf-8,' + encodeURIComponent(csv),
    filename = 'filename.csv';
$("#csvDwnLink").attr({'download': filename, 'href': csvData});
$('#csvDwnLink')[0].click();
document.body.removeChild(link);

Safari将为用户下载该文件,但文件名将为unknown,可能是因为Safari不支持'{1}}提及的“下载”属性。

2 个答案:

答案 0 :(得分:9)

我做了一个快速研究 - 我看起来Safari不支持你想要实现的目标。

您的解决方案在Chrome(和Firefox)中运行的原因是他们support the download attribute - Safari还没有。

答案 1 :(得分:0)

Safari 10.1+支持"下载"属性。它现在应该工作。

https://github.com/eligrey/FileSaver.js/issues/129#issuecomment-275221240