Javascript 在onbeforeunload()事件中使用Confirm()
我希望在卸载页面之前出现一个确认框,如果用户单击ok,那么在离开页面之前需要调用一个函数,如果他单击cancel,它应该保持在同一页面上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
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毫秒或更大,以确保如果用户选择离开,卸载将中断呼叫。