Javascript 如何在IE和safari中下载csv文件而不使用“下载”属性?
我有一个csv文件链接。我的应用程序是angularjs appliction,为了下载它,我使用了下载属性,它在chrome和firefox中运行良好。但这在IE和safari中不起作用,因为IE和safari浏览器不支持下载属性。你们能给我建议一下如何在IE和safari上使用吗。如果可能的话,一个分享者可以分享吗?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 =
提前谢谢 这是我在上一个项目中使用的代码。它并不完美,但在所有浏览器和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不要删除此问题。它被标记为一个副本,我们继续前进。不要阻止用户提问,即使是无意中重复的问题。