2012-03-07 68 views
1

我想添加一個動畫加載程序圖像,它會在用戶觸發下載附件後出現,並在下載實際開始後消失 - 瀏覽器開始下載文件時(或顯示下載確認對話框)。原因是附件是在服務器端生成的非常複雜的文檔,這需要一些時間,動畫加載器會向用戶保證該頁面正在工作(並且在下載開始之前禁用下載按鈕)。開始下載後執行代碼

該附件已正確設置Http標頭。

下面是它看起來像現在:

var link = $("#download-link"); 
link.click(function() { 
    link.displayLoader(); 
    $(document).load(link.attr("href"), function() { 
    link.hideLoader(); 
    }); 
    return false; 
}); 

主要問題是load方法顯然不這樣做,我想達到的目標。有沒有辦法捕獲實際開始下載,由window.location更改觸發?

回答

0

爲什麼不先顯示加載程序映像?

如果我現在正確理解,問題是您希望加載器映像一旦文件開始下載就消失,並且目前它一旦文件完成下載就會消失?

我不認爲有一種簡單的方法可以用jQuery來實現,但如果直接使用普通JavaScript XMLHttpRequest對象,您將在各個下載階段獲得多個回調,您可以通過readyState屬性。

+0

我不明白你的問題。加載器圖像由'displayLoader()'方法顯示,爲簡單起見,我沒有在這個問題中包含該方法,但我認爲它的名字是自解釋的。 – Przemek 2012-03-07 14:11:42

+0

他確實想先展示裝載機,他正在做什麼。我想問的是,如何在「下載實際開始」時隱藏加載程序(無論這意味着什麼) – jbabey 2012-03-07 14:12:01

+0

這意味着 - 當瀏覽器開始下載文件時。 – Przemek 2012-03-07 14:13:38

1

你可以做的是。

在下載準備就緒(服務器端處理)之前,禁用整個屏幕。

然後用戶點擊按鈕下載,用戶直接下載文件。

接下來是大多數下載網站的方法。 例如。 Mediafire.com

PS:禁用整個屏幕意味着系統類型對話框。禁用其他選項。