在我们当前的项目中,我们提供了PDF下载,可以通过他提交的HTML表单由用户自定义。动态生成PDF需要几秒钟的时间,我想要将其可视化,例如通过禁用提交按钮直到下载开始。不幸的是,我无法找到一种方法来检测下载何时开始*。所以我不知道什么时候重新启用提交按钮。有没有办法在JavaScript中检测下载的开始?
我已经试图指定一个IFrame作为我的HTML表单的目标,希望onload
事件将被触发。但是,这不是 - 可能是因为PDF是使用“Content-disposition: attachment
”标题发送的,并且它实际上并未加载到IFrame中。
我现在能想到的唯一解决方案就是将PDF生成为服务器上的临时文件,我希望避免这种情况。
*)让我澄清一下:我不需要知道下载是否完成,或者即使它真的开始。我想要检测浏览器询问用户是打开还是保存文件的位置。我猜这发生在浏览器收到HTTP头时。
你想知道下载何时开始或何时完成?无论哪种方式,我认为临时文件不会有所作为。在客户端,你不能分辨文件是坐在服务器上还是实时生成。 – Prestaul 2009-01-07 14:15:11
那么您提交表单,并且对此提交的回复是PDF文件?在暂停期间,浏览器处于等待服务器响应的模式?它是否正确? – Breton 2009-01-07 14:16:03
@Breton:对! @Pretaul:我想知道下载何时开始。所以,我可以创建一个临时文件,向隐藏的IFrame发送一些HTML响应,然后通过onload处理程序中的JavaScript获取临时文件。 – 2009-01-07 15:12:54