在 onbeforeunload() 事件中使用 Confirm() 函数

3

我希望在卸载页面之前出现确认框,如果用户点击确定,则需要在离开页面之前调用一个函数,如果他点击取消,则应保留在同一页。

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

有没有任何方式可以使用JS使这个工作正常?
1个回答

3
不行,你不能这样做。唯一的方法是从你的onbeforeunload处理程序返回一个字符串值来实现这个目标。一些浏览器(例如Chrome)将使用该字符串并在其默认警告消息中显示它。但其他浏览器不会使用它,只会显示一个标准消息,让用户有机会中断页面卸载。
// Chrome will use the 'Y U LEAVING' string in its warning message now
window.onbeforeunload = function() {
    if(!submitFormOkay) {
        return 'Y U LEAVING ?';
    }
};

谢谢您的回复,有没有办法在用户点击“离开此页”时调用我的函数,从这里显示的消息中? - Arvind Singh Y
@ArvindSinghY 那是一个非常模糊的尝试。你可以使用两个嵌套的 setTimout() 调用来尝试。我们想要实现的是,在模态对话框出现之前,我们设置了一个函数调用在浏览器的 UI 队列中执行。第二个(嵌套的)setTimeout 在模态对话框关闭时触发。由于我们不知道用户选择留下还是离开(我们只知道对话框已关闭),因此我们可以将第二个超时设置为 1000ms 或更长时间,以确保如果用户选择离开,则卸载将中断调用。 - jAndy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接