Javascript 下载开始后执行代码
我想添加一个动画加载程序映像,该图像将在用户触发附件下载后出现,并在下载实际启动后消失-当浏览器开始下载文件(或显示下载确认对话框)。原因是附件是在服务器端生成的非常复杂的文档,这需要一些时间,动画加载程序会向用户保证页面正在工作(并在下载开始之前禁用下载按钮) 附件已正确设置Http头 下面是它现在的样子:Javascript 下载开始后执行代码,javascript,jquery,Javascript,Jquery,我想添加一个动画加载程序映像,该图像将在用户触发附件下载后出现,并在下载实际启动后消失-当浏览器开始下载文件(或显示下载确认对话框)。原因是附件是在服务器端生成的非常复杂的文档,这需要一些时间,动画加载程序会向用户保证页面正在工作(并在下载开始之前禁用下载按钮) 附件已正确设置Http头 下面是它现在的样子: var link = $("#download-link"); link.click(function () { link.displayLoader(); $(document)
var link = $("#download-link");
link.click(function () {
link.displayLoader();
$(document).load(link.attr("href"), function () {
link.hideLoader();
});
return false;
});
主要的问题是load
方法显然没有达到我想要的效果。是否有方法捕获由窗口触发的实际下载开始。位置更改?为什么不先显示加载程序图像
如果我现在理解正确的话,问题是您希望加载程序映像在文件开始下载后消失,而目前它在文件完成下载后消失
我认为使用jQuery没有简单的方法,但是如果您直接使用普通的JavaScriptXMLHttpRequest
对象,您将在下载的不同阶段收到几个回调,您可以通过readyState
属性访问这些回调。为什么不先显示加载程序映像
如果我现在理解正确的话,问题是您希望加载程序映像在文件开始下载后消失,而目前它在文件完成下载后消失
我认为使用jQuery没有简单的方法,但是如果您直接使用普通的JavaScriptXMLHttpRequest
对象,您将在下载的不同阶段收到几个回调,您可以通过readyState
属性访问这些回调。您可以做到的是
禁用整个屏幕,直到下载就绪(服务器端处理)
用户点击下载按钮,用户直接下载文件
大多数下载网站遵循的方法。
例如,Mediafire.com
PS:禁用整个屏幕意味着系统类型对话框。禁用其他选项。您可以做的是
禁用整个屏幕,直到下载就绪(服务器端处理)
用户点击下载按钮,用户直接下载文件
大多数下载网站遵循的方法。
例如,Mediafire.com
PS:禁用整个屏幕意味着系统类型对话框。禁用其他选项。我不理解你的问题。加载程序图像是通过displayLoader()
方法显示的,为了简单起见,我没有将其包含在问题中,但我认为它的名称是不言自明的。他确实想先显示加载程序,他正在这样做。我想问题是,当“下载真正开始”(不管是什么意思)的时候——当浏览器开始下载文件时,他如何隐藏加载程序。对,明白了。“不做我想做的事”有点模棱两可。现在更新答案。很抱歉,我的答案模棱两可,英语不是我的第一语言。我不明白你的问题。加载程序图像是通过displayLoader()
方法显示的,为了简单起见,我没有将其包含在问题中,但我认为它的名称是不言自明的。他确实想先显示加载程序,他正在这样做。我想问题是,当“下载真正开始”(不管是什么意思)的时候——当浏览器开始下载文件时,他如何隐藏加载程序。对,明白了。“不做我想做的事”有点模棱两可。现在更新答案。很抱歉我的答案模棱两可,英语不是我的第一语言。