Javascript 在onbeforeunload()事件中使用Confirm()

Javascript 在onbeforeunload()事件中使用Confirm(),javascript,html,Javascript,Html,我希望在卸载页面之前出现一个确认框,如果用户单击ok,那么在离开页面之前需要调用一个函数,如果他单击cancel,它应该保持在同一页面上 window.onbeforeunload = function() { if (!submitFormOkay) { if (confirm("Are you sure you want to leave?")) { leavepage(); } else { submi

我希望在卸载页面之前出现一个确认框,如果用户单击ok,那么在离开页面之前需要调用一个函数,如果他单击cancel,它应该保持在同一页面上

window.onbeforeunload = function() {
    if (!submitFormOkay) {
        if (confirm("Are you sure you want to leave?")) {
            leavepage();
        } else {
            submitfromokay = true;
            location.reload();
        }
    }
}

我可以用JS来完成这项工作吗?

不,你不能。以某种方式实现该目标的唯一方法是从
onbeforeunload
处理程序返回字符串值。一些浏览器(例如Chrome)将使用该字符串并在默认警告消息中显示该字符串。但是其他浏览器不会使用它,只会显示一条标准消息,这给了用户一个中断页面卸载的机会

// Chrome will use the 'Y U LEAVING' string in its warning message now
window.onbeforeunload = function() {
    if(!submitFormOkay) {
        return 'Y U LEAVING ?';
    }
};

感谢您的回复,当用户点击此处显示的消息中的“离开此页面”时,我是否可以调用我的函数?@ArvindSinghY这是一个非常模糊的尝试。您可以对
setTimout()
进行两个嵌套调用。我们想要实现的是,在浏览器UI队列中设置一个函数调用,在模式对话框出现之前执行。第二个(嵌套的)
setTimeout
在模式对话框关闭时被触发。由于我们不知道用户选择留下还是离开(我们只知道对话框关闭了),我们可以将第二个超时设置为1000毫秒或更大,以确保如果用户选择离开,卸载将中断呼叫。