我有一个用于转换数据的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类型。
答案 0 :(得分:4)
在点击之前,您需要将a
元素附加到DOM:
document.body.appendChild(link);
link.click();
然后你可以立即删除它:
document.body.removeChild(link);