0
在我的項目中,我使用AngularJS創建了下載文件的指令。它包含以下內容:爲什麼下載tiff在Firefox中不起作用?
scope.$on('downloaded', function(event, data) {
var hiddenLink = document.createElement('a');
$(hiddenLink).attr({
href: 'data:application/tiff;base64,' + data.Attachment,
download: data.AttachmentFileName
});
if (isIEorFirefox) {
$(hiddenLink).click(function(event){
event.preventDefault();
var byteString = atob(data.Attachment);
var buffer = new ArrayBuffer(byteString.length);
var intArray = new Uint8Array(buffer);
for (var i = 0; i < byteString.length; i++) {
intArray[i] = byteString.charCodeAt(i);
}
var blob = new Blob([buffer],{type:'image/tiff'});
window.navigator.msSaveOrOpenBlob(blob, data.AttachmentFileName);
});
$(hiddenLink).trigger('click');
} else {
hiddenLink.click();
}
});
以前有一個問題 - 下載IE中根本就沒有開始 - 但現在,你可以把它已被淘汰。雖然另一個問題仍然存在 - 目前這段代碼不會在Firefox中開始下載。只有一個問題 - 爲什麼?
UPDATE:
,因爲它沒有在IE中正確保存文件我已經更新初始代碼。現在確實如此。在網上搜索我仍然無法找到一種方法來在FF中進行文件下載。此外FF根據這篇文章https://hacks.mozilla.org/2012/07/why-no-filesystem-api-in-firefox/似乎還沒有任何本地的方式來保存文件。如果有人證明我錯了,我將不勝感激。
嗯,這一個 - hiddenLink.click(); - 利用原生的JS點擊事件,並在Chrome,IE和Opera中正常工作。 – Nervosa
可能是一個版本問題,firefox 5或更高版本,以前沒有。 「在Gecko 5.0之前,Gecko沒有在其他可能會響應鼠標點擊的元素(如鏈接(元素))上實施點擊方法,也不一定會觸發其他元素的點擊事件。」 https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click –