2009-10-19 45 views
0

我有一個大的Excel文檔,當用戶點擊下載鏈接時生成。當點擊下載鏈接時,瀏覽器彈出標準的打開保存取消對話框。問題是等待時間可能很長,例如出現對話框之前15秒或更長時間。我想在請求正在進行時顯示一個忙碌的gif。我怎樣才能做到這一點?用戶點擊一個鏈接後顯示忙碌的GIF

我很確定我可以很容易地使用jQuery顯示一個gif,但我不知道如何在新文檔(excel doc)加載完成時停止/隱藏繁忙指示器。有一個JavaScript事件,我可以附加一個處理程序?

回答

2

另一種選擇是將臨時文件的方法:Is there a way to detect the start of a download in JavaScript?

基本上:

  1. 用戶點擊下載鏈接/按鈕
  2. 的AJAX請求被髮送到創建Excel文檔。顯示「繁忙」指標。
  3. excel文檔被創建並保存到服務器上的臨時文件。發送的響應包含標識文件的唯一標識。
  4. AJAX響應在客戶端處理。隱藏「繁忙」指示器。 window.location被更改爲類似'download.aspx?id=###'這樣的提示用戶保存該文件。
2

這裏的問題是點擊鏈接會觸發另一個與第一個無關的請求。 可能有處理下載請求更新某種會話數據的代碼,然後鏈接頁面上的一些Ajax輪詢,以確定請求處理程序何時處於提供數據下載的過程中。

或者,您可以簡單地在合理的時間段(比如說30秒)之後使其超時,並且可能會提供解釋。那麼這可能是通過幾個國家的轉型:

"Click here to download the super-duper PDF of awesomeness!" 
"Please wait, generating a whole dollop of fonty goodness..." 
"It may take some time to bundle all that uber-data into a download...if nothing's happening, maybe you want to try again?" 

這似乎是辦法,當談到檢測超時或類似的問題,谷歌郵件需要。