下载开始后执行代码
executing code after download starts
我想添加一个动画加载程序图像,它将在用户触发下载附件后出现,并在下载实际开始后消失——当浏览器开始下载文件时(或显示下载确认对话框)。原因是附件是在服务器端生成的非常复杂的文档,这需要一些时间,并且动画加载程序会向用户保证页面正在工作(并禁用下载按钮,直到下载开始)。
附件已正确设置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
属性访问这些回调。
相关文章:
- setTimeout函数能否在其前面的代码执行之前激发
- 延迟代码执行,直到下载完成
- 奇怪的javascript代码执行顺序
- 将字符串作为一段 HTML/javascript 代码执行
- 使用AngularJS,如何在视图和控制器同步特定更改后触发代码执行
- onKeyUp 导致代码执行两次
- JQuery:将参数传递给插件以限制代码执行
- JavaScript代码执行时间
- 基本的JavaScript代码执行
- JavascriptCore:从本机代码执行JavaScript定义的回调函数
- 脚本标记的位置会影响代码执行
- 页面脚本未使用 Salesforce Web-to-Lead 代码执行
- GM_xmlhttpRequest 成功回调“onload”未为注入的代码执行
- 停止所有代码执行,直到 IFrame 完全加载
- 纯 Javascript 代码执行停止混合应用程序中的离子加载指示器
- Javascript代码执行顺序
- Javascript:在嵌套函数中使用条件语句停止代码执行
- Node.js代码执行顺序
- 什么触发JavaScript代码执行
- onreadystatechange导致php代码执行两次