下载开始后执行代码

时间:2012-03-07 14:06:03

标签: javascript jquery

我想添加一个动画加载器图像,该图像会在用户触发下载附件后显示,并在下载实际开始后消失 - 当浏览器开始下载文件时(或显示下载确认对话框)。原因是附件是在服务器端生成的非常复杂的文档,这需要一些时间,动画加载器会向用户保证页面正在工作(并在下载开始之前禁用下载按钮)。

附件已正确设置Http标头。

现在看来是这样的:

var link = $("#download-link");
link.click(function () {
  link.displayLoader();
  $(document).load(link.attr("href"), function () {
    link.hideLoader();
  });
  return false;
});

主要问题是load方法显然没有达到我想要达到的目的。有没有办法捕获由window.location更改触发的实际下载开始?

2 个答案:

答案 0 :(得分:1)

你能做的就是。

在下载准备就绪(服务器端处理)之前禁用整个屏幕。

用户点击按钮下载,用户直接下载文件。

大多数下载网站遵循的方法。 例如。 Mediafire.com

PS:禁用整个屏幕意味着系统类型对话框。禁用其他选项。

答案 1 :(得分:0)

为什么不首先显示加载程序映像?

如果我现在理解正确,问题是您希望加载器图像在文件开始下载后消失,并且当文件下载完成后它会消失吗?

我不认为使用jQuery有一种简单的方法,但如果你直接使用普通的JavaScript XMLHttpRequest对象,你将在下载的各个阶段得到几个你可以访问的回调通过readyState属性。