我有一个页面,允许用户下载动态生成的文件.生成需要很长时间,所以我想显示一个"等待"指标.问题是,我无法弄清楚如何检测浏览器何时收到文件,所以我可以隐藏指标.
我正在以隐藏的形式发出请求,该请求POST到服务器,并针对其结果定位隐藏的iframe.这样我就不会用结果替换整个浏览器窗口.我在iframe上监听"加载"事件,希望在下载完成后它会触发.
我在文件中返回"Content-Disposition:attachment"标题,这会导致浏览器显示"保存"对话框.但浏览器不会在iframe中触发"加载"事件.
我尝试过的一种方法是使用多部分响应.因此它会发送一个空的HTML文件,以及附加的可下载文件.例如:
Content-type: multipart/x-mixed-replace;boundary="abcde"
--abcde
Content-type: text/html
--abcde
Content-type: application/vnd.fdf
Content-Disposition: attachment; filename=foo.fdf
file-content
--abcde
Run Code Online (Sandbox Code Playgroud)
这适用于Firefox; 它接收空的HTML文件,触发"load"事件,然后显示可下载文件的"Save"对话框.但它在IE和Safari上失败了; IE触发"加载"事件但不下载文件,Safari下载文件(名称和内容类型错误),并且不会触发"加载"事件.
一种不同的方法可能是调用启动文件创建,然后轮询服务器直到它准备就绪,然后下载已经创建的文件.但我宁愿避免在服务器上创建临时文件.
有没有人有更好的主意?
我有一个网页(由JSF制作),其中一些链接允许用户获取PDF文件.
当用户点击这样的链接时,会显示一个等待弹出窗口(它是一个模态面板)(因为PDF的生成可能很长),并且一旦创建了文件,IE就会显示建议的"文件下载"弹出窗口"打开","保存"和"取消"选项.
当这个弹出窗口关闭时,即当用户保存(或打开)PDF文件时,Javascript是否有办法从我的网页中知道?
为了更精确一点,在显示PDF文件链接的网页中,会显示一个模态弹出窗口("等待弹出窗口"),以使用户等待"文件下载"弹出窗口.问题是当用户保存(或打开)PDF文件时,"文件下载"弹出窗口关闭,但用户然后"返回"到原始网页,同时仍显示等待弹出窗口.
请注意,我的应用程序仅在IE6中运行,因此我不反对IE(6) - 仅解决方案...
对于需要jQuery的解决方案我也没问题;)
编辑: 如果存在一个解决方案来捕获任何在向用户显示"文件下载"弹出窗口时触发的事件(即在用户选择保存,打开或取消之前),那么对我来说也没关系!
是否有任何方式(在Javascript中)下载远程网站(例如与Curl一样),将其读入字符串变量并进一步处理它?
我有一个链接,点击时下载pdf文件.
有没有办法使用jQuery来判断何时发生这种情况.基本上我希望链接从下载更改为请稍等.下载完成后,它将更改为其他内容.
主要原因是pdf是服务器端生成的,可能需要10或20秒.