【问题标题】:Cancel redirect / beforeUnload取消重定向 / beforeUnload
【发布时间】:2014-06-15 20:45:55
【问题描述】:

我正在使用jQuery BlockUI 插件在每次用户更改 URL、点击链接、被重定向、去某个地方等时显示一些漂亮的(“请稍候...”)消息:

$(window).on('beforeunload', function(){$.blockUI();});

现在,我想使用Cancel 按钮来增强此消息,这将防止此类重定向并让用户停留在当前页面上。这引出了一个问题:Javascript 中是否有任何方法可以停止正在进行的 URL 更改过程? 或者任何其他方法/解决方案,我可以在此 Cancel 按钮的单击事件中绑定?

我是在尝试做一些愚蠢或无用的事情吗?

【问题讨论】:

  • 那么您能否准确地确认您想要发生的事情您希望在旧页面显示的短时间内,以显示一个按钮 可能 取消 url 更改。但实际上并不能阻止它的发生......对于大多数用户来说,卸载时间将不到一秒,这远远没有足够的时间让他们选择点击取消?请再次解释:D

标签: javascript jquery url-redirection cancel-button


【解决方案1】:

您可以在 beforeunload 位中尝试e.preventDefault()return false,但出于安全原因,您想要做的事情在技术上不受浏览器的支持。想象一个无法关闭的窗口的含义......

最好的办法是使用内置语法。将字符串返回到beforeunload 会弹出一个对话框,询问您是否确定要退出,该字符串作为问题和选项“离开页面”或“留在页面上”。

例子

$(window).on('beforeunload', function(){
    return "Do you really want to leave this page?";
});

更新

进一步阅读后发现主流浏览器支持返回字符串语法,但 Firefox 不支持。 Firefox 将简单地将您的字符串替换为“您确定要退出此页面吗?”。或类似的东西。

TLDR:您可以在所有浏览器中使用上述返回字符串语法,但您的自定义语句不会在 Firefox 中显示 :)

【讨论】:

  • +1 表示尝试回答,但要么我错过了一些东西,要么我们正在谈论两个不同的事情。在beforeunload 上返回一个字符串会导致(如果我没记错的话)显示带有我的字符串的标准modal 对话框(Firefox 除外!:])。由于它是模态的,因此在用户同意之前不会发生页面/URL 更改。那是我根本不想要的。我想防止 URL 更改,只有当用户点击 Cancel (它,我想要做的,是可能的)。但如果他/她什么都不做,应该会发生正常的 URL 更改。显示标准的beforeunload 问题窗口会阻止这种情况。
猜你喜欢
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 2022-07-24
  • 1970-01-01
  • 2013-09-09
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多