为什么下载到xls功能在Edge浏览器中不起作用,但在chrome中起作用

问题描述 投票:0回答:1

下面是我要下载到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();
  }
angularjs export-to-excel edge
1个回答
0
投票

我以前有这个问题,我所做的是检查浏览器的类型,然后触发特定事件。

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

© www.soinside.com 2019 - 2024. All rights reserved.