vue关闭页面发出请求:
问题描述:
要求在页面关闭时,向后端发送一个请求。但是有时候会请求成功,有时候后端不会收到请求
mounted() {
this.messageWrapper = document.querySelector("#message-wrapper");
window.addEventListener('unload', this.deleteSentence, false)
},
methods: {
deleteSentence() {
axios.post('http://localhost:5051/classpoint/deleteDialogue');
},
}
原因分析:
请求必须是同步的,不能是异步的,不然有可能请求没发出去,页面就已经关闭
解决方案:
参考:https://blog.csdn.net/weixin_43837268/article/details/90400606
https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/sendBeacon
https://zhuanlan.zhihu.com/p/344824815
其次,如果需要在关闭标签页时弹出提示框,参考:https://cloud.tencent.com/developer/article/1730838
注意:关闭标签页前用户需要在页面上进行过操作,才能执行beforeunload