下面是我要下载到xls功能的代码。我不确定为什么它在Edge中无法正常工作。但是,它在chrome中可以正常工作。也没有控制台错误。不确定Edge不支持以下代码行的哪一部分。还有什么其他方法可以重写以下代码,使其支持edge。
$scope.downloadXls = function() {
var repayments = $scope.repayments;
var csvContent = "data:text/csv;charset=utf-8,";
var rows = [
[
"Payment No",
"Installment",
"Principal",
"Interest",
"Balance",
]
];
for (var i = 0; i < repayments.length; i++) {
rows.push([
i + 1,
parseFloat(repayments[i].installment).toFixed(2),
parseFloat(repayments[i].principal).toFixed(2),
parseFloat(repayments[i].interest).toFixed(2),
parseFloat(repayments[i].balance).toFixed(2)
]);
}
rows.forEach(function(rowArray) {
let row = rowArray.join(",");
csvContent += row + "\r\n";
});
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "repayment_schedule.csv");
document.body.appendChild(link); // Required for FF
link.click();
}
我以前有这个问题,我所做的是检查浏览器的类型,然后触发特定事件。
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "repayment_schedule.csv");
if (window.navigator.userAgent.indexOf("Edge") > -1) {
// Using Edge
link.onmouseup();
}
else {
// Using other browsers.
link.click();
}
[请注意,在遇到Edge假定的错误的问题后,我使用的这段代码稍旧一些。我尚未查看是否已在基于更新版MS的Edge浏览器中修复此问题。
编辑:mouseup适用于jQuery。应该是onmouseup