当条件变为真时如何禁用onbeforeunload?

时间:2016-09-21 11:18:58

标签: javascript jquery

我有一个测试页面,用户可以在指定的时间内回答它。

对于时间限制,我使用了javascript倒计时器。直到时间没有完成,用户必须无法关闭窗口。

为此,我使用onbeforeunload窗口事件来阻止窗口关闭:

<script language="JavaScript">
    window.onbeforeunload = confirmExit;
    function confirmExit() {
        return "You have attempted to leave this page. Are you sure?";
    }
</script>

另一方面,在倒计时器中,我设置了timeUp功能,在完成时间后将用户重定向到结果页面。

在这种情况下,由于点击onbeforeunload以上,重定向失败,上面的消息显示给用户。

有什么办法可以在条件成立时禁用onbeforeunload事件吗?

2 个答案:

答案 0 :(得分:2)

使用beforeunload事件处理程序调用取消绑定

 $(window).unbind('beforeunload');

或尝试尝试

 window.onbeforeunload = null;`

答案 1 :(得分:1)

如果onbeforeunload函数不会返回任何内容 - 浏览器将不会显示任何消息。

因为您说您使用了计时器功能来检查是否应该向用户显示该消息。

var displayMessage = true;
setTimeout(function() {
    displayMessage = false;
}, 10000);

function confirmExit() {
    if (displayMessage) {
        return "You have attempted to leave this page. Are you sure?";
    }
}
window.onbeforeunload = confirmExit;

在上面的代码中--10秒后,displayMessage的值将为false,如果用户在10秒后尝试刷新/退出页面,浏览器将不会显示该消息。