我有一个测试页面,用户可以在指定的时间内回答它。
对于时间限制,我使用了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
事件吗?
答案 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秒后尝试刷新/退出页面,浏览器将不会显示该消息。