在我们当前的项目中,我们提供了一个 PDF 下载,用户可以通过他提交的 HTML 表单对其进行自定义。动态生成 PDF 需要几秒钟,我想将其可视化,例如通过禁用提交按钮直到下载开始。不幸的是,我找不到检测下载何时开始的方法*。所以我不知道何时重新启用提交按钮。
我已经尝试将 IFrame 指定为我的 HTML 表单的目标,希望onload
能够触发该事件。然而,事实并非如此——可能是因为 PDF 是使用“ Content-disposition: attachment
”标头发送的,并且它实际上并未加载到 IFrame 中。
我现在能想到的唯一解决方案是将 PDF 生成到服务器上的临时文件中,我想避免这种情况。
*)让我澄清一下:我不需要知道下载是否完成,或者即使它真的开始了。我想检测浏览器询问用户是打开还是保存文件的点。我猜这发生在浏览器收到 HTTP 标头时。