2009-10-19 57 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?" 

这似乎是办法,当谈到检测超时或类似的问题,谷歌邮件需要。