锚单击下载不在Firefox中工作

时间:2016-02-17 23:37:51

标签: javascript angularjs

var anchor = angular.element('<a/>');
anchor.attr({
    href: 'data:attachment/csv;charset=utf-8,' + encodeURI(response.data),
    target: '_blank',
    download: 'Rates.csv'
})[0].click();

此锚元素在Firefox和Internet Explorer中不起作用,但在Chrome中有效。是因为我从未将元素添加到DOM中吗?我该如何解决这个问题?

这是从服务器获取费率并显示为要下载的附件。

更新:

var anchor = document.createElement('a');
anchor.href = 'data:attachment/csv;charset=utf-8,' + encodeURI(response.data);
anchor.target = '_blank';
anchor.download = 'Rates.csv';
document.body.appendChild(anchor);
anchor.click();
$timeout(function () {
   anchor.remove();
}, 50);

在我的指令中添加了这个,现在工作正常。

2 个答案:

答案 0 :(得分:1)

click()适用于Chrome。对于Firefox,您可以尝试下面的代码

 var ev = document.createEvent("MouseEvents");
 ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

// Fire event
anchor.dispatchEvent(ev);

答案 1 :(得分:0)

我没有那么多Angular,但如果你传递给attr()方法的下载属性代表HTML5下载属性,那么你的问题是所有浏览器都不完全支持它。