我正在使用AngularJS创建新标记以下载csv文件。我用来触发下载的代码下面。下载从Chrome开始,但不在Firefox中。你知道为什么会这样吗?
var element = angular.element('<a/>');
element.attr({
href: exportedString,
target: '_self',
download: 'test.csv'
})[0].click();
编辑: Firefox需要一个现有的DOM
JS:
var linkElem = $("#link");
var element = angular.element(linkElem);
HTML:
<a ng-hide=true id="link"></a>
编辑2 :在Chrome上,下载的文件名是“download”而不是传递的值(本例中为“test.csv”)。有什么建议吗?
此处还有plunker
答案 0 :(得分:5)
这是{35}在issue #377860中报告的Chrome 35中的错误。
关注this答案了解详情
我更新了您的plunker解决方案。
基本上你需要使用它,如下所示:
var element = document.createElement('a');
var blob = new Blob([$scope.exportContent], {
type: 'text/csv'
});
var url = URL.createObjectURL(blob);
element.href = url;
element.setAttribute('download', 'test.csv');
document.body.appendChild(element); //Append the element to work in firefox
element.click();
答案 1 :(得分:0)
同时获得Chrome和&amp; FF工作,我实际上发现我必须首先检查元素[0]是否未定义(它是在Chrome中但不是FF):
var link = $("#reportDownloadLink");
var element = angular.element(link)
.attr('href', dataUrl)
.attr('download', data.FileDownloadName)
.attr('target', '_blank');
(element[0] || element).click();