我创建了一个下载CSV文件的函数,该函数在chrome中运行良好,但当我在firefox中下载文件时,文件被下载了两次,一个文件使用提供的名称,另一个使用随机文本
const handleDownloadClick = async () => {
const csv = orderGuideData.map((item: any) => {
return [
user?.business?.name,
item.item,
item.ddCategory1 ? item.ddCategory1:"",
item.ddCategory2 ? item.ddCategory2:"",
item.supplier.replace(/,/g, " "),
item.quantity ? item.quantity.toFixed(2) : 0,
item.unitPrice ? item.unitPrice.toFixed(2) : 0,
item.tot ? item.tot : 0,
];
});
if (csv) { const csvData = [["Business","ITEM","DASHY CATEGORY 1","DASHY CATEGORY 2", "DISTRIBUTOR", "QTY", "COST", "TOTAL"]].concat(csv);
const rows = csvData;
let csvContent = "";
rows.forEach(function(rowArray) {
let row = rowArray.join(",");
csvContent += row + "\r\n";
});
var encodedUri = "data:text/csv;charset=utf-8,%EF%BB%BF" + encodeURIComponent(csvContent);
window.open(encodedUri);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "Dashy-Dash-Order-Guide.csv");
document.body.appendChild(link);
link.click();
}
};
1条答案
按热度按时间lymgl2op1#
您已经为链接设置了href属性,然后调用
link.click()
那么,为什么还要使用
window.open(encodedUri);
呢?