【问题标题】:Alert Popup Problen警报弹出问题
【发布时间】:2012-11-09 15:51:29
【问题描述】:

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

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

<script>
 var okayToLeave = false;

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

function OkayToLeave() {
    okayToLeave = true;
} 

【问题讨论】:

  • 这是一个大型常见问题解答。改为修复您的表单提交
  • 这个问题已经在包括这个在内的各种论坛上被问了超过 100000 次(只需在这个网站上搜索 onbeforeunload)。修复你的后端,这样它就可以处理问题,而不是试图破解你的前端来修补问题

标签: javascript html


【解决方案1】:

缺少一个“ 在以下行中:

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;
};

【讨论】:

  • 我同意语法是关闭的,但我认为另一个问题是他/她需要一种方法来设置 OKToLeave 时没有点击链接,对吧?
  • 对不起,这只是我输入代码时的编辑问题。那里没有问题。马特是在正确的轨道上。
  • 是的,马特,这就是问题所在。我让它为后退按钮工作,但是当我尝试关闭窗口时,警报出现了,它不应该出现。它应该只发生在后退按钮上。
  • 但这并不能解决问题。只是用其他代码替换代码。我需要知道如何在用户尝试关闭窗口时删除警报。只要它不存在,我用什么让它不显示警报并不重要。
  • 信不信由你。无法检测是否有人单击了后退按钮或关闭了窗口。 window.onbeforeunload 基本相同
【解决方案2】:

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

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

jquery hashChange 插件是检测变化的一种方式。

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

【讨论】:

  • 如何完全重定向到另一个页面?你能给我一个关于如何做到这一点的好链接吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多