0

我正在制作的警报功能有问题。只有当用户按下后退按钮时,警报才会响起。问题是当用户也尝试关闭页面时会显示警报。有任何解决这个问题的方法吗?这是代码。我通过在单击的任何链接上将布尔值设置为 true 来完成这项工作,这会关闭警报。

编辑:对于任何抓住它的人,是的,缺少引号。那只是我在这里编辑代码并意外删除了引号。这实际上不是问题,我在这里的代码中修复了它。

<script>
 var okayToLeave = false;

window.onbeforeunload = function () {
   if (!okayToLeave) {
   return "By going back, you risk submitting your order twice."
   }
}

function OkayToLeave() {
    okayToLeave = true;
} 
4

2 回答 2

4

以下行中缺少 ":

return "By going back, you risk submitting your order twice."

编辑:

你的OkayToLeave方法应该定义onbeforeunload.

因此,您应该考虑只添加该事件,而不是将值设置为 true。

编辑2:

这是一个代码示例:

function NotOkayToLeave() {
    window.onbeforeunload = function () {
        return "By going back, you risk submitting your order twice.";
    };
};

function OkayToLeave() {
    window.onbeforeunload = null;
};
于 2012-11-08T21:19:17.947 回答
1

我不知道有任何方法可以确定卸载是由事件引起的关闭还是返回操作。但是,作为替代解决方案,您可以使用哈希标记作为缓冲区(这假设您不能完全重定向到另一个页面,这将是首选解决方案(除了设置会话值以防止重复提交))。

当他们到达页面时,使用 javascript 更改哈希标记。然后,检测哈希何时变回(后退按钮)并发出警报并添加回哈希。

jquery hashChange 插件是检测更改的一种方法。

https://github.com/cowboy/jquery-hashchange

于 2012-11-08T21:21:55.700 回答