我希望在用户尝试离开我的Web应用程序时,如果他/她的项目未保存,可以向其发出警告。目前,我不关心正在编辑的编辑框。我从会话中知道项目的脏状态。
我很快意识到,如果我为window.onbeforeunload设置一个函数,即使他/她在我的Web应用程序内导航到另一个页面,也会干扰用户。在这种情况下,不需要干扰,会话仍将保持活动状态。
我尝试了一个源自Fire onbeforeunload only when window is closed (includes working example)的解决方案。
我很快意识到,如果我为window.onbeforeunload设置一个函数,即使他/她在我的Web应用程序内导航到另一个页面,也会干扰用户。在这种情况下,不需要干扰,会话仍将保持活动状态。
我尝试了一个源自Fire onbeforeunload only when window is closed (includes working example)的解决方案。
window.onbeforeunload = function (e) {
var targetHost = new URL(e.target.URL).hostname;
if (targetHost != window.location.host)
return "Project is unsaved!!!";
else
return null;
};
new URL(e.target.URL).hostname
的结果是(至少在IE11上):
JavaScript运行时错误:对象不支持此操作
我在任何搜索中都找不到有关不存在 new URL(e.target.URL).hostname
的任何信息,这真是神秘。
但同时我希望这不是不可能的,我不相信其他人没有经历过这个问题。