我想添加一个动画加载器图像,该图像会在用户触发下载附件后显示,并在下载实际开始后消失 - 当浏览器开始下载文件时(或显示下载确认对话框)。原因是附件是在服务器端生成的非常复杂的文档,这需要一些时间,动画加载器会向用户保证页面正在工作(并在下载开始之前禁用下载按钮)。
附件已正确设置Http标头。
现在看来是这样的:
var link = $("#download-link");
link.click(function () {
link.displayLoader();
$(document).load(link.attr("href"), function () {
link.hideLoader();
});
return false;
});
主要问题是load
方法显然没有达到我想要达到的目的。有没有办法捕获由window.location
更改触发的实际下载开始?
答案 0 :(得分:1)
你能做的就是。
在下载准备就绪(服务器端处理)之前禁用整个屏幕。
用户点击按钮下载,用户直接下载文件。
大多数下载网站遵循的方法。 例如。 Mediafire.com
PS:禁用整个屏幕意味着系统类型对话框。禁用其他选项。
答案 1 :(得分:0)
为什么不首先显示加载程序映像?
如果我现在理解正确,问题是您希望加载器图像在文件开始下载后消失,并且当文件下载完成后它会消失吗?
我不认为使用jQuery有一种简单的方法,但如果你直接使用普通的JavaScript XMLHttpRequest
对象,你将在下载的各个阶段得到几个你可以访问的回调通过readyState
属性。