Cancel redirect / beforeUnload

Cancel redirect / beforeUnload

本文关键字:beforeUnload redirect Cancel      更新时间:2023-09-26

我使用jQuery BlockUI插件来显示一些不错的("请等待…")消息,每次用户更改URL,点击链接,被重定向,去某个地方等:

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

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

我是不是在做一些愚蠢或无用的事情?

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

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

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

进一步阅读后发现,大多数浏览器都支持返回字符串语法,但Firefox不支持。Firefox会简单地将你的字符串替换为"Are you sure you want to exit this page?"或者类似的内容。

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