javascript - 在窗口关闭时发送通知

标签 javascript xmlhttprequest

我有一个 Web 应用程序,我试图在窗口关闭时向服务器发送通知。到目前为止,我发现的最好方法是在 onunload 中使用同步 xhr(因为异步不可靠)。这是目前的代码:

    window.onunload = function() {
      var req = new XMLHttpRequest();
      req.open('GET', '/api/v1/' + id + '/close?resource=' + JSON.stringify(resource), false);
      req.setRequestHeader('Authorization', localStorage.token);
      req.send();
    }

唯一的问题是当他们重新加载页面时,页面卡住了一点(我认为这是由于 xhr)。有没有更好的方法在窗口关闭时向服务器发送通知?

最佳答案

我认为更好的解决方案是对新浏览器(Chrome、Opera 和 Firefox)使用 Navigator.sendBeacon,因为它是异步的,并且浏览器会向您 promise 将发送请求。

此方法解决了分析和诊断代码的需求,这些代码通常会在卸载文档之前尝试将数据发送到 Web 服务器。

您可以在这里找到更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon

填充:https://github.com/miguelmota/Navigator.sendBeacon

关于javascript - 在窗口关闭时发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30538538/

相关文章:

javascript - .getJSON 有效,.get 无效

javascript - Windows 中使用 XMLHttpRequest 的 React.JS POST 值

javascript - 如何确定我的脚本在哪个页面上运行

javascript - CSS3 PIE 不适用于 border-radius 和 box-shadow

javascript - 将键、值 JSON 数组转换为表格 JSON 格式

javascript - $.get 在请求 URL 中发送原型(prototype)函数?

javascript - 我们可以在 AngularJS 的 ng-options 中使用 split 吗?

javascript - Loopback如何读取mongodb上的结果聚合

javascript - 使用 php/mysql javascript 创建一个简单的 Web 开发测试但不起作用

javascript - 解析 XMLHttpRequest() 结果(使用 XPath)