下载开始后执行代码

executing code after download starts

本文关键字:代码 执行 开始 下载      更新时间:2023-09-26

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

附件已正确设置Http标头。

以下是它现在的样子:

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

主要的问题是load方法显然没有达到我想要的效果。有没有一种方法可以捕捉window.location更改触发的实际下载开始?

你可以做的是。

禁用整个屏幕,直到下载准备就绪(服务器端处理)。

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

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

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

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

如果我现在理解正确的话,问题是你希望加载程序映像在文件开始下载后消失,而目前它在文件完成下载后消失?

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