【问题标题】:Browser agnostic hook to send asynchronous request upon window.onunload浏览器不可知的钩子在 window.onunload 上发送异步请求
【发布时间】:2016-02-22 09:37:19
【问题描述】:

当用户关闭浏览器选项卡或窗口时,我们希望实现一个挂钩来发送 http 删除请求。

我的问题是——可以

window.onunload

window.onbeforeunload

保证AJAX请求的发送还是没有这种保证?

现在,我们不需要处理http响应,我们只需要满足删除请求的高成功率,这意味着我们需要保证在运行时关闭之前发送请求。

这也必须适用于主流浏览器。

【问题讨论】:

  • 这听起来像是一个 XY 问题。为什么卸载时需要发送delete
  • “我们需要保证请求在运行时关闭之前发送出去”没有一个系统可以给你这样的保证。
  • @Mathletics 你在质疑这个用例吗?如果你愿意,我可以提供用例。为了保持模糊,我们可以在 onunload 之前发送删除请求,但是 onunload/onbeforeunload 为我们提供了一个方便的事件来启动删除,如果它是可靠的,但它似乎不可靠。

标签: javascript dom-events onbeforeunload onunload window.onunload


【解决方案1】:

没有一个系统/浏览器可以给你这样的保证。

但无线信号丢失例如我认为也符合“会话结束”的条件。

唯一的选择是使用某种从客户端到服务器的心跳信号。

【讨论】:

  • 是的,我认为你是对的......我们可能可以尽快发送 AJAX 请求,而不是等到浏览器关闭,但当然浏览器仍有可能在发出 AJAX 请求
【解决方案2】:

Navigator.sendBeacon 在您的情况下可能有用,但它目前只能发送 POST 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2011-10-28
    • 2019-09-07
    • 2011-01-05
    • 1970-01-01
    • 2017-07-29
    • 2018-04-26
    相关资源
    最近更新 更多