我知道这里已经有很多类似的话题,但是我找不到合适的答案。
我的MVC应用程序对公司有以下要求:
如果特定任务尚未完成,则当用户尝试关闭浏览器窗口或导航离开站点但允许在站点内导航时,发出警告/确认弹出窗口。
如果页面已更改且未保存,请在用户尝试关闭浏览器窗口或导航离开页面时发出警告/确认。相当正常。
我的以下代码与IE完全兼容。使用谷歌浏览器(GC),第二个要求可以正常工作,但是当关闭具有不完整任务的GC浏览器窗口时,第一个要求不起作用。该事件不会触发,并且不会弹出警告。但是,如果我打开F12工具,它将使用正确的变量值。而且,如果我首先尝试导航并在警告弹出时选择“居家”,然后关闭浏览器窗口,它也可以与警告弹出窗口一起使用。
任何想法都受到高度赞赏。
window.onbeforeunload = confirmExit;
function confirmExit() {
if (!isTaskComplete && !isValidNavigation) //1st requirement
return "Incomplete task alert.";
if (isPageChanged && !isSubmit) //2nd requirement
return "Unsaved change alert";
return undefined;
}
$('.navigation, .submit').click(function () {
isValidNavigation = true;
});