Detect/Prevent 在 Javascript/AngularJS 中关闭浏览器或卸载会话存储
Detect/Prevent Browser Close or Session Storage Unload in Javascript/AngularJS
如何使用 javascript 或 AngularJS 检测浏览器或选项卡关闭并允许用户通过对话框消息阻止它?
我有一个 AngularJS 应用程序可以将数据保存到会话存储中,这样用户就可以刷新页面而不会丢失他们的状态,并且还可以在不同的选项卡中打开多个单独的应用程序实例而无需同步数据.
如果用户关闭选项卡或浏览器,那么他们将丢失正在进行的工作,因为会话已卸载。我想检测会话何时被销毁并向用户显示一条消息,通知他们如果他们继续他们将失去正在进行的工作并允许他们 select 确定继续关闭 browser/tab 或取消以停止阻止它关闭。我只想在 browser/tab 关闭时显示消息,而不是在用户点击刷新按钮或导航到新页面时显示消息。
注意1:我需要使用会话存储而不是本地存储,因为不同的选项卡需要隔离应用程序的实例并且不能共享数据。
注意 2:我已经尝试了 unload 和 beforeUnload 事件,但它们不起作用,因为它们也会在单击刷新按钮或用户导航离开页。我只想在会话被销毁之前显示消息,即当 tab/browser 实际关闭时。
注意 3:这是供公司内部使用的公司应用程序,我了解所有用户及其用例,所以我不担心弹出消息会惹恼他们。我意识到阻止用户关闭应用程序在 public 网站上会是一种糟糕的用户体验,但他是一个非常受控的场景。
理想情况下,您可以只使用 beforeunload 事件生命周期..但正如您所提到的,您不能。据我所知,没有其他方法可以将方法绑定到类似事件。
也就是说,您可能还想重新考虑您的第一个笔记。您可以为每个新会话创建一个哈希,并将会话内容存储在本地存储中该键下。
如何使用 javascript 或 AngularJS 检测浏览器或选项卡关闭并允许用户通过对话框消息阻止它?
我有一个 AngularJS 应用程序可以将数据保存到会话存储中,这样用户就可以刷新页面而不会丢失他们的状态,并且还可以在不同的选项卡中打开多个单独的应用程序实例而无需同步数据.
如果用户关闭选项卡或浏览器,那么他们将丢失正在进行的工作,因为会话已卸载。我想检测会话何时被销毁并向用户显示一条消息,通知他们如果他们继续他们将失去正在进行的工作并允许他们 select 确定继续关闭 browser/tab 或取消以停止阻止它关闭。我只想在 browser/tab 关闭时显示消息,而不是在用户点击刷新按钮或导航到新页面时显示消息。
注意1:我需要使用会话存储而不是本地存储,因为不同的选项卡需要隔离应用程序的实例并且不能共享数据。
注意 2:我已经尝试了 unload 和 beforeUnload 事件,但它们不起作用,因为它们也会在单击刷新按钮或用户导航离开页。我只想在会话被销毁之前显示消息,即当 tab/browser 实际关闭时。
注意 3:这是供公司内部使用的公司应用程序,我了解所有用户及其用例,所以我不担心弹出消息会惹恼他们。我意识到阻止用户关闭应用程序在 public 网站上会是一种糟糕的用户体验,但他是一个非常受控的场景。
理想情况下,您可以只使用 beforeunload 事件生命周期..但正如您所提到的,您不能。据我所知,没有其他方法可以将方法绑定到类似事件。
也就是说,您可能还想重新考虑您的第一个笔记。您可以为每个新会话创建一个哈希,并将会话内容存储在本地存储中该键下。