gpt4 book ai didi

javascript - 使用 onbeforeunload 关闭窗口之前的等待事件

转载 作者:行者123 更新时间:2023-11-28 09:06:54 26 4
gpt4 key购买 nike

上下文:

我开发了一个需要身份验证的应用程序。该应用程序使用事件与服务器对话。当服务器应答时,一些事件将发送到客户端 (UI)。

问题:

当用户关闭页面时,需要在服务器上进行注销。使用我的架构,可以轻松调用执行此注销的方法。但我希望用户在关闭网页之前显示注销进度。事实上,我想仅在特定事件(例如:disconnection_success)受到好评时关闭网页。此外,不要启动另一个网页非常重要,因为注销成功时会在第一个网页上收到事件。 (因为对话框完成后抛出 XMLHttpRequest)

测试:

我已经使用 onbeforeunload 做了一些测试,但似乎很难自定义弹出窗口。

您有解决问题的想法吗?

BR

最佳答案

这存在一些问题,但您的方向是正确的。您是对的,您应该使用 onbeforeunload ,因为它是您在关闭浏览器窗口时可以触发的唯一事件。 (我知道你可以使用 onunload,但那时你没有时间做任何事情。)这里的问题是你想要执行多少代码。 onbeforeunload 在开始卸载页面之前不会给您太多时间。

顺便说一句,onbeforeunload 有两种不同的场景:

  • 如果您在 onbeforeunload 事件中返回一个字符串,它将创建您所引用的弹出窗口。这里的问题是,使用弹出窗口,您将没有足够的时间来执行代码
  • 另一个选项是不返回任何内容。相反,调用您的注销方法。这应该让您的代码有足够的时间在关闭之前执行

我实际上有一个与此非常相似的问题,最终自己解决了:How to logout during onbeforeunload/onunload using Javascript

在您的问题中,您声明您希望在他们注销时显示进度条。当用户关闭浏览器时这是不可能的。在他们关闭窗口的那一刻,您已经失去了所有控制,除了 onbeforeunload (和 onunload 但不使用它),这就是为什么您的代码需要在那里执行。话虽这么说,您可以锚定注销按钮(我假设您的应用程序上有一个)并让它显示进度栏。

想想如果您确实拥有这种控件会发生什么 - 当用户尝试关闭浏览器窗口时您可以弹出窗口和进度条。您可以弹出任何内容并限制用户使用任何可靠的功能。这就是为什么它被编程为 onbeforeunload(和 unload)事件是唯一可能访问浏览器关闭的事件。这些事件有一些非常严格的指导方针,以防止任何可能的误用。我理解你遇到的问题,我就在那里,它很臭,但我认为如果你要使用 onbeforeunload,这是你唯一的选择。

关于javascript - 使用 onbeforeunload 关闭窗口之前的等待事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922157/

26 4 0
文章推荐: ios - 使 UIScrollView 中的顶部图像在 ScrollView 边界上放大?
文章推荐: jquery - 如果使用 jquery 的任何 ="0"都不可用,如何添加 cellspacing ``?