Javascript 如何在IE和safari中下载csv文件而不使用“下载”属性?

Javascript 如何在IE和safari中下载csv文件而不使用“下载”属性?,javascript,html,angularjs,Javascript,Html,Angularjs,我有一个csv文件链接。我的应用程序是angularjs appliction,为了下载它,我使用了下载属性,它在chrome和firefox中运行良好。但这在IE和safari中不起作用,因为IE和safari浏览器不支持下载属性。你们能给我建议一下如何在IE和safari上使用吗。如果可能的话,一个分享者可以分享吗? 提前谢谢 这是我在上一个项目中使用的代码。它并不完美,但在所有浏览器和IE9+中都通过了QA downloadCSV(data,fileName){ var blob =

我有一个csv文件链接。我的应用程序是angularjs appliction,为了下载它,我使用了下载属性,它在chrome和firefox中运行良好。但这在IE和safari中不起作用,因为IE和safari浏览器不支持下载属性。你们能给我建议一下如何在IE和safari上使用吗。如果可能的话,一个分享者可以分享吗?
提前谢谢

这是我在上一个项目中使用的代码。它并不完美,但在所有浏览器和IE9+中都通过了QA

downloadCSV(data,fileName){
  var blob = new Blob([data], {type:  "text/plain;charset=utf-8;"});
  var anchor = angular.element('<a/>');

  if (window.navigator.msSaveBlob) { // IE
    window.navigator.msSaveOrOpenBlob(blob, fileName)
  } else if (navigator.userAgent.search("Firefox") !== -1) { // Firefox
    anchor.css({display: 'none'});
    angular.element(document.body).append(anchor);

    anchor.attr({
      href: 'data:attachment/csv;charset=utf-8,' + encodeURIComponent(data),
      target: '_blank',
      download: fileName
    })[0].click();

    anchor.remove();
  } else { // Chrome
    anchor.attr({
      href: URL.createObjectURL(blob),
      target: '_blank',
      download: fileName
    })[0].click();
  }
}

在IE中使用ms-specific API最适合我们。还要注意的是,有些浏览器要求锚点实际位于DOM中,下载属性才能工作,而Chrome则不需要。此外,我们还发现blob在各种浏览器中的工作方式存在一些不一致之处。一些浏览器也有导出限制。这允许在每个浏览器中进行尽可能大的CSV导出。

请!请通过stackoverflow链接!在堆栈溢出中提问之前,请删除此问题并进行一些研究。@UtkarshDubey不要删除此问题。它被标记为一个副本,我们继续前进。不要阻止用户提问,即使是无意中重复的问题。