如果用户不小心关闭/离开网站的会话,如何警告用户?



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

你可以尝试下面的代码:

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

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

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

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

我应该补充一点,您必须注意多个同时出现的选项卡,因此您可能希望通过以某种方式使密钥唯一来解决此问题,例如同时创建两张发票。

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

您可以按照 Tejinder 的答案将此技术与使用 window.onBeforeUnload 结合使用,但由于您无法设置"卸载确认"提示的样式,因此提供自动恢复是一种更好的体验。

最新更新