停止页面卸载/关闭

Posted

技术标签:

【中文标题】停止页面卸载/关闭【英文标题】:Stop Page Unload/Close 【发布时间】:2014-06-21 13:03:03 【问题描述】:

我有一个系统,其中在满足特定条件之前不得关闭/卸载页面。这是为了强制员工填写非常重要的信息。

我知道这不是好的 UI 做法,我完全同意,但在这种情况下,经过长时间的讨论,这是 100% 必要的。

我已经尝试了以下代码:

 $(window).bind('beforeunload', function (event) 
                cancelEvent(event);
                stopEvent(event);
 );

function cancelEvent(e) 
    if (!e) e = window.event;
    if (e.preventDefault) 
        e.preventDefault();
     else 
        e.returnValue = false;
    


function stopEvent(e) 
    if (!e) e = window.event;
    if (e.stopPropagation) 
        e.stopPropagation();
     else 
        e.cancelBubble = true;
    

上面的代码不起作用。

有没有办法终止卸载事件并保持页面显示?

目标浏览器是 IE 7-9,所以即使它不能在现代浏览器上运行也没问题。

再次感谢。

【问题讨论】:

查看jAndy's 对主题的回答。 【参考方案1】:

这不仅是糟糕的 UI 设计,而且无法做到。您可以在beforeunload 中执行的操作是向用户返回一个字符串,然后该字符串将显示在用户必须确认导航的提示中。

$(window).on('beforeunload', function()
    return 'Are you sure you want to leave?';
);

您最好的选择是提供足够严厉的信息,例如。 “您将在进程 X 完成之前离开页面。不要这样做,您会毁了一切。现在认真点击取消。”

【讨论】:

以上是关于停止页面卸载/关闭的主要内容,如果未能解决你的问题,请参考以下文章

事件:卸载事件(onunload)

在不刷新页面的情况下停止getUserMedia的网络摄像头流[重复]

如何确保在页面卸载之前始终调用代码

jquery注销功能

页面的卸载或者刷新事件

收音机开始。但它并没有停止。当我在项目中切换页面时它不会停止