Javascript 下载在firefox&IE&Edge中不起作用(扩展问题)

Javascript 下载在firefox&IE&Edge中不起作用(扩展问题),javascript,angular,Javascript,Angular,我有一些JavaScript代码,如第一个代码片段中所示,可以在最新的Chrome中使用,但不能在最新的FireFox中使用。这段代码使用Blob对象将数据导出到html文件。奇怪的是,在FireFox中,代码没有抛出任何错误,而是得到一个没有扩展名的文件。 Edge&IE中的相同问题 导出代码: downloadFile(data: Response | any, fileName: string, typefile) { const blob = new Blob([data], {

我有一些JavaScript代码,如第一个代码片段中所示,可以在最新的Chrome中使用,但不能在最新的FireFox中使用。这段代码使用Blob对象将数据导出到html文件。奇怪的是,在FireFox中,代码没有抛出任何错误,而是得到一个没有扩展名的文件。 Edge&IE中的相同问题

导出代码:

downloadFile(data: Response | any, fileName: string, typefile) {
    const blob = new Blob([data], {type: typefile});
    if (window.navigator.msSaveOrOpenBlob) {
      window.navigator.msSaveBlob(blob, fileName);
    } else {
      const url = window.URL.createObjectURL(blob);
      const anchor = document.createElement('a');
      anchor.download = fileName;
      anchor.href = url;
      document.body.appendChild(anchor);
      anchor.dispatchEvent(new MouseEvent(`click`, {bubbles: true, cancelable: 
true, view: window}));
      document.body.removeChild(anchor);
      setTimeout(function() {window.URL.revokeObjectURL(url); }, 0);

    }
  }

这包括Safari>=10,Chrome>=55,包括Opera, *桌面上的Edge>=13,移动设备上的iOS 10和Chrome

在中了解更多信息

浏览器多边形填充* /**IE9、IE10和IE11需要以下所有多填充**/

请在polyfills.ts中添加以下代码

导入“core js/es6/reflect”; 导入“core js/es7/reflect”


导入'zone.js/dist/zone'

我已经使用了以下代码,并在Edge和Firefox中进行了测试,它也能正常工作,除了Ipad上的Safari之外,Safari也能正常工作

   if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                window.navigator.msSaveOrOpenBlob(data, filename);
            }
            else {
                var url = window.URL.createObjectURL(data);
                var a = document.createElement('a');
                document.body.appendChild(a);
                a.setAttribute('style', 'display: none');
                a.href = url;
                a.download = filename;
                a.click();
                window.URL.revokeObjectURL(url);
                a.remove();
            }

到底是什么问题?你怎么知道问题出在这段代码中?我只是假设我添加了它,但问题是一样的