我们有一个弹出窗口,用户在其中作出一些选择,并点击一个按钮,以生成一个pdf文件。我们将显示一个进度显示(动画gif),然后最终使用content-disposition:inline将pdf内容发送给用户。然后用户通常打印pdf文件。
对于某些用户,没有用于pdf文件的内联浏览器查看器,系统会提示用户保存pdf文件。在这些情况下,即使文件已交付,进度显示仍保持打开状态。检测用户选择保存文件而不是内联显示文件的好方法是什么?
到目前为止,我提出的一个想法是,在弹出窗口中设置一个计时器,以便在其内容仍然存在时关闭窗口。理论上,如果用pdf查看器替换窗口内容,计时器将被清除。还有其他选择吗?如果生成pdf可能需要很长时间,我怎么知道要设置多长时间?我可以先发送http头,然后再发送pdf内容以快速触发pdf查看器吗?
我们通过在请求服务器开始生成PDF之前设置一个计时器来解决这个问题。如果查看器在浏览器窗口中打开PDF,则计时器将被取消。如果计时器没有被取消,那么它会关闭窗口。我们选了很长的时间来计时。