我有一个很大的Excel文档,当用户点击下载链接时会生成该文档。单击下载链接时,浏览器会弹出标准的打开保存取消对话框。问题是等待时间可能很长,例如对话框出现前15秒或更长时间。我想在请求正在进行时显示忙碌的gif。我怎么能做到这一点?
我很确定我可以轻松地使用jQuery显示gif,但我不确定如何在新文档(excel doc)加载完成后停止/隐藏忙指示符。是否有可以附加处理程序的javascript事件?
答案 0 :(得分: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?"
这似乎是Google Mail在检测超时或类似问题时采取的方法。
答案 1 :(得分:2)
另一个选项是临时文件方法:Is there a way to detect the start of a download in JavaScript?
基本上:
window.location
更改为'download.aspx?id=###'
,提示用户保存文件。