我有一个在 ie 中运行的 web 应用程序,当我在 IE 上单击“X”右角关闭应用程序时,它将调用(通过 javascript window.onunload)一个 struts 操作并删除数据库表中的记录。但现在我发现它有时是不正确的。有时当我关闭时记录没有被删除,即。应该是没有删除记录时没有调用struts动作的情况。
更有趣的是,当我打开 Fiddler 时,记录在关闭时被正确删除,即每次都没有失败的情况。
非常感谢。
我有一个在 ie 中运行的 web 应用程序,当我在 IE 上单击“X”右角关闭应用程序时,它将调用(通过 javascript window.onunload)一个 struts 操作并删除数据库表中的记录。但现在我发现它有时是不正确的。有时当我关闭时记录没有被删除,即。应该是没有删除记录时没有调用struts动作的情况。
更有趣的是,当我打开 Fiddler 时,记录在关闭时被正确删除,即每次都没有失败的情况。
非常感谢。
您不能依赖“onunload”事件。
从网络浏览器的角度考虑:是否应该等到所有打开的页面都处理“onunload”事件,即使需要 30 秒?浏览器可能会可靠地向所有打开的选项卡触发“onunload”事件,但是它只等待很短的时间来完成它们。这就是为什么您会看到不一致的行为。
如果你真的必须这样做,看看onbeforeunload
,但是它的实现在浏览器之间是不一致的:IIRC,opera 没有实现它。