2012-03-07 46 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:禁用整个屏幕意味着系统类型对话框。禁用其他选项。