我可以使用javascript判断用户是否点击了浏览器对话框中的“X”图标,还是“确定”/“取消”按钮?我需要在窗口关闭时运行代码,但只有在单击“确定”或“取消”时才会运行。
我目前正在捕获窗口的onunload事件。我怎么能做到这一点?
window.onunload = function() { alert("unloading"); }
答案 0 :(得分:6)
你为什么要这样做?如果你告诉我们你想要做什么,我们可能会帮助你想出一个不需要这个的不同设计。
然而,要回答你的问题:在所有情况下都无法捕获该事件。您不能阻止用户关闭浏览器或保证您的代码执行时执行。你可以让它稍微烦人,但他们可以禁用javascript,或杀死进程,或重新启动计算机。使用卸载功能是最接近窗口关闭时运行的代码(在正常关闭或用户导航时会运行)。
答案 1 :(得分:4)
如果我理解正确,您的问题是关于浏览器对话框,而不是主浏览器窗口。
要回答您的问题,您可能无法区分浏览器对话框的“取消”按钮和X按钮。他们最终都会返回false
。如果您需要这种级别的控制,您应该考虑编写自己的模拟对话框(灯箱),而不是真正的JavaScript对话框。或者查看现有的框架/插件,其中包含模态对话框,可以为您提供所需的控制量。
答案 2 :(得分:3)
如果他做了ALT + F4怎么办?
答案 3 :(得分:2)
据我所知,您无法通过单击“取消”按钮或[x]按钮来检测用户是否关闭了对话框,因为除了返回操作结果之外,两者都不会暴露给您(例如,确认()为真/假)。
您可以挂钩document.onbeforeunload事件来执行您需要的任何清理操作;我已经通过向服务器发送异步XMLHTTP请求来确保用户的会话得到正确清理。
答案 4 :(得分:0)
无法捕获浏览器的关闭并处理导致回发的所有其他事件。你可以尝试许多人在你面前失败。
您最好的选择是使用onbeforeunload并学习如何在服务器端处理会话超时以清理数据。