每当用户更改URL,单击链接,重定向,转到某处时,我都在使用jQuery BlockUI插件显示一些不错的消息(“请稍候...”):

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


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

我是在做愚蠢或无用的事情吗?

最佳答案

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

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



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


更新

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

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

09-17 21:53