window.onbeforeunload将用户返回到同一页面

时间:2013-08-08 17:55:46

标签: javascript settimeout onbeforeunload

在离开带有表单的页面时,我想保存所做的更改,而无需任何用户确认。

找到这个question我改编了以下答案之一。请注意,我没有使用return:

function setConfirmUnload(on) {
    window.onbeforeunload = (on) ? unloadMessage : null;
}
function unloadMessage() {
    alert('Gonna save now');
    setTimeout(validate_submit,500);
}

仅当用户填写表单中的某个值时才会触发此操作。如果元素值发生变化,我使用

setConfirmUnload(true);

FF23中的结果:当用户点击某处离开页面时,显示警报,在“确定”时执行validate_submit(),出现新页面 - 但现在警报重新出现,用户返回到原始页面“好”。为什么?有人可以证实这种行为吗?

1 个答案:

答案 0 :(得分:0)

window.onbeforeunload方法会显示一个确认框,其中包含分配给它的函数返回的任何消息。您可以在此方法中添加警报和其他内容,但它始终以确认消息结束。如果你的函数没有返回任何内容,它仍然会给出一条消息(由浏览器确定),说“你确定要离开这个页面”或者其他类似的东西。