在Safari中使用blob保存CSV文件

我在下面有代码生成下载链接,以便用户可以在我的网站上下载.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文件的内容?
希望有人可以给我一些建议或替代方法。
提前致谢!

==更新==
在这里找出解决方案
解决方案1 , 解决方案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不支持“下载”属性,正如raphael提到的那样。

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

您的解决方案在Chrome(和Firefox)中运行的原因是它们支持下载属性 – Safari尚未支持。

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

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