停止页面卸载/关闭

时间:2014-05-05 09:17:49

标签: javascript jquery dom onbeforeunload dom-events

我有一个系统,在满足特定条件之前,不得关闭/卸载页面。这是为了迫使员工完成非常重要的信息。

我知道这不是一个好的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,所以即使它在现代浏览器上不起作用也没关系。

再次感谢。

1 个答案:

答案 0 :(得分:2)

不仅UI设计不佳,而且无法完成。您在beforeunload中可以做的是将一个字符串返回给用户,然后在用户必须确认导航的提示中显示该字符串。

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

您最好的选择是提供足够严格的信息,例如。 "您将在流程X完成之前离开页面。不要这样做,你会破坏一切。认真点击立即取消。"