卸载/退出时确认对话框除非按下后退按钮?

时间:2009-12-10 18:16:05

标签: javascript prototype

当用户试图离开我的表单时,我有一些简单的代码来显示确认对话框:

window.onbeforeunload = askConfirm;
function askConfirm(){
    return "Your answers will be lost.";
}

但这是一个多页面形式,他们经常按回去更改上一页的某些值。

但是当他们这样做时,对话框仍然出现。

有解决方法吗?

2 个答案:

答案 0 :(得分:2)

不幸的是,我建议的答案实际上并没有回答你的问题,而是一种解决方案。这里唯一可能的解决方案是确保单击后退按钮的用户实际上不会通过存储所有页面的表单答案来创建问题。在PHP的情况下,我会将它们存储在会话中($_SESSION)。您必须认识到用户使用后退按钮比浏览器中的任何其他UI元素更多。如果您的表单确实必须跨越多个页面,那么您需要确保他们输入的数据在所有这些页面中都是持久的。我实际上会在您自己的界面中为此提供导航。以可视方式提供清晰的顺序过程,并尽可能在此过程中进行即时导航。

答案 1 :(得分:1)

我没有看到专门检测用户是否按下“后退”或任何其他浏览器按钮的方法。这超出了网站的范围。

只有一个解决方案:只有当全局标志设置为“true”时才显示确认对话框。

if (ask_when_exiting == true)
 return "Your answers will be lost.";

您必须在要为其弹出确认的每个链接的onclick事件中将变量设置为true?。您应该能够使用JQuery或其他JS框架(像$$('a').each()....这样的东西)将此事件大量应用于页面上的每个链接。

但是,这将禁用重新加载页面的确认,或者使用页面上的控件触发的任何其他事件,例如键入其他URL或关闭浏览器。

相关问题