檢測(cè)瀏覽器何時(shí)收到文件下載我有一個(gè)允許用戶下載動(dòng)態(tài)生成文件的頁(yè)面。這需要很長(zhǎng)時(shí)間來(lái)生成,所以我想顯示一個(gè)“等待”指示器。問(wèn)題是,我不知道如何檢測(cè)瀏覽器何時(shí)收到文件,所以我可以隱藏指示符。我以一種隱藏的形式發(fā)出請(qǐng)求,該請(qǐng)求發(fā)布到服務(wù)器,并針對(duì)隱藏的iframe獲取其結(jié)果。這樣我就不會(huì)用結(jié)果替換整個(gè)瀏覽器窗口了。我在iframe上聽(tīng)一個(gè)“Load”事件,希望它在下載完成后啟動(dòng)。我返回一個(gè)“內(nèi)容處理:附件”頭與文件,這導(dǎo)致瀏覽器顯示“保存”對(duì)話框。但是瀏覽器不會(huì)在iframe中觸發(fā)“Load”事件。我嘗試過(guò)的一種方法是使用多部分響應(yīng)。因此,它將發(fā)送一個(gè)空的HTML文件,以及附加的可下載文件。例如:Content-type: multipart/x-mixed-replace;boundary="abcde"--abcdeContent-type: text/html--abcdeContent-type:
application/vnd.fdfContent-Disposition: attachment; filename=foo.fdf
file-content--abcde這在Firefox中是可行的;它接收空的HTML文件,觸發(fā)“Load”事件,然后顯示可下載文件的“Save”對(duì)話框。但是它在IE和Safari上失??;IE觸發(fā)“Load”事件,但不下載文件,Safari下載文件(名稱和內(nèi)容類(lèi)型錯(cuò)誤),并且不觸發(fā)“Load”事件。另一種方法可能是調(diào)用啟動(dòng)文件創(chuàng)建,然后輪詢服務(wù)器直到它準(zhǔn)備就緒,然后下載已經(jīng)創(chuàng)建的文件。但我寧愿避免在服務(wù)器上創(chuàng)建臨時(shí)文件。有人有更好的主意嗎?
檢測(cè)瀏覽器何時(shí)收到文件下載
犯罪嫌疑人X
2019-05-30 12:45:47