为什么我的csv下载按钮仅适用于Chrome

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的csv下载按钮仅适用于Chrome相关的知识,希望对你有一定的参考价值。

我正在开发一个项目,我必须在单击按钮时下载csv文件。显然,该下载仅适用于Chrome。请帮我弄清楚我应该对我的代码做些什么来使下载能够在所有浏览器上运行(例如Edge,Firefox,Safari ......)

另请注意,在Safari上而不是下载时,它会在新选项卡中打开csv文件。

这是我的代码:

function download(csv) {
    var element = document.createElement('a');
    element.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
    element.target = '_blank';
    element.download = 'services.csv';
    element.click();
}
答案

考虑使用第三方库来做这样的事情,而不是重建轮子。 download.js是一个非常棒的跨平台库,可以解决这类问题。要使您的代码使用此库,您可能会执行以下操作:

download(your_csv_data, "services.csv", "text/csv");

查看文档链接和更多很酷的示例。

另一答案

创建看起来像下面示例的标记。使用“下载”属性。

<a href="link/to/your/download/file" download>Download link</a>

如果要添加该文件,Target =“_ blank”将导致文件在下载开始之前在新选项卡中打开。

<a href="link/to/your/download/file" download="filename">Download link</a>

如果将download属性设置为等于字符串,则下载的文件将使用该值作为名称。

以上是关于为什么我的csv下载按钮仅适用于Chrome的主要内容,如果未能解决你的问题,请参考以下文章

仅适用于 Chrome 的 CSS? [关闭]

为啥我的 Button 样式对象仅适用于按钮内的文本,而不适用于整个按钮?

javascript 函数仅适用于 firefox

Google HTML 5 Geolocation“使用我的位置”仅适用于 Firefox

iframe 安全错误 - 仅适用于 iOS 版 Chrome [重复]

日期选择器 html5 标记不适用于 Mozilla、IE 浏览器。但它仅适用于 Chrome