用于下载csv文件的Javascript在FireFox中无效

时间:2016-06-09 04:57:35

标签: javascript csv

我有一个用于转换数据的javascript并将其另存为csv文件。它看起来像这样:

function downloadCSV(args) {
    var data, filename, link;
    var type = args.type;
    var fields = Object.keys(json_for_export[0]);
    var csv = json_for_export.map(function(row){
        return fields.map(function(fieldName){
            return '"' + (row[fieldName] || '') + '"';
            });
        });
   csv.unshift(fields);
   csv = csv.join('\r\n')
   if (csv == null) return;
   filename = 'csv' + '_' + args.filename || 'export.csv';
   if (!csv.match(/^data:text\/csv/i)) {
            csv = 'data:text/csv;charset=utf-8,' + '\uFEFF' + csv;
   }
   data = encodeURI(csv);
   link = document.createElement('a');
   link.setAttribute('href', data);
   link.setAttribute('download', filename);
   link.click();
}

它在Chrome浏览器中运行良好,但在Firefox中无效。可能是问题的原因是什么? 检查控制台并将数据格式化为csv类型。

1 个答案:

答案 0 :(得分:4)

在点击之前,您需要将a元素附加到DOM:

document.body.appendChild(link);
link.click();

然后你可以立即删除它:

document.body.removeChild(link);