如果用户意外关闭/离开网站会话,如何警告用户?

时间:2017-08-02 10:55:57

标签: asp.net-mvc google-chrome session

我们使用ASP.NET MVC在Web上开发会计系统并遇到了这个问题 - 如果用户处于工作中间并以某种方式设法关闭浏览器,则所有工作都已消失(并且用户根本不是极客,它确实发生了并将发生)。特别是在Windows中的Chrome出现问题后,他们从哲学原因中删除了关闭标签的警告,因此现在它将关闭。我们希望能够以某种方式捕捉这种行为。甚至当Firefox例如警告用户要关闭他的标签时 - 只需单击该复选框就可以再次删除它。那么是否可以跟踪此操作以防止用户意外关闭浏览器并丢失所有工作?或者甚至可以在Chrome中执行此操作?解决方案将是简单的警告窗口,但是在我们的Web应用程序处于活动状态时,如果关闭,它基本上都需要显示。出于明显的安全原因,我们不希望在关闭浏览器后保持会话活动。此外 - 它应该适用于Chrome,IE和Firefox。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下代码:

window.onbeforeunload = function() 
{
   return "Are you sure you want to exit";
}

答案 1 :(得分:0)

如果您的前端使用MVVM,如AngularJS或Knockout,或任何其他流行的绑定库,请考虑采用不同的方法来阻止用户退出页面。

在客户端间隔中,序列化您的视图模型并将其存储在本地存储中。 当满足当前页面的保存/退出条件时,清除本地存储。

如果再次加载页面,并且本地存储中存在某些内容,则表示在上一个会话中,浏览器在保存之前已关闭 - 因此将本地存储对象反序列化回viewmodel(每页使用一个唯一键) ) - 你可以将它与一些用户界面相结合,告诉用户他们之前的状态已经恢复,单击确定继续或重新开始重新开始(这将重置视图模型)

我应该补充一点,你必须注意多个同时标签,所以你可能想通过以某种方式使密钥唯一来解决这个问题,例如:同时创建两张发票。

这实质上只提供自动保存,但仅提供客户端。

根据Tejinder的回答,您可以将此技术与使用window.onBeforeUnload相结合,但由于您无法设置“卸载确认”提示,因此提供自动恢复是一种更好的体验。