我有一个 jsp 页面 home.jsp,它分为两个框架 Header 和 Content。在我的内容框架中,我有一个链接,它调用这样的 servlet
<a href="downloadAttach">download</a>
JavaScript 函数 doloadAttach 具有以下行:
window.location="RetrieveFile.display";
RetrieveFile 是一个 servlet,它从共享位置获取文档并将其写入输出流,以便我可以选择保存/取消/打开附件
此外,内容框架中的所有页面都有以下代码行,以确保页面不缓存在浏览器中:
window.onbeforeunload=function(){window.location.replace("<%= request.getcontextPath()%>/home.jsp")}
此外,我的 home.jsp 中有以下脚本,以确保在卸载 home.jsp 时显示警告消息。脚本是这样的:
window.onbeforeunload=function(){return "sure you want to go away"};
现在假设我在google然后移动到home.jsp,然后点击下载附件链接。附件已正确下载。之后,我对导致页面刷新的 jsp 执行任何操作,例如提交表单或关闭表单,然后按浏览器返回,我的 home.jsp 卸载并且我被带到谷歌,并且弹出消息没有显示。如果我执行完全相同的步骤并刷新或关闭浏览器,则会出现消息。我还尝试在 servlet 中设置标头以进行缓存控制,但没有任何区别。我用的是ie8