利用js实现页面关闭时发送http请求

最近在做项目的时候,有这样一个功能,当用户在填写表单之后,或是填写了部分表单,但并没有点击提交,而且是离开了页面,这时需要前端做一个事,就是发个请求到后端保存用户填写的表单数据。

一、在做这件事件之前 需要弄清楚beforeunload和unload的区别

1.onunload事件是已经从服务器读取到了数据,在替换到当前页面之前执行的。

2.onbeforeunload事件是正要去服务器读取数据还没有读取到页面数据时执行的,因此onbeforeunload事件优先于onunload事件执行,可以阻止onunload事件的执行。

 onunload事件在窗口打开、刷新、关闭时都会执行。

 onbeforeunload事件在新窗口被打开的时候并不会执行,只在刷新和关闭时执行。
window.addEventListener('beforeunload', function() {
   // dosomething
});  

二、还有另外一个就是需要在页面关闭之前去发完这个请求,

这个请求必须是同步的请求

原因:我个人理解的是如果是同步的请求,浏览器会等待请求发送出去后再响应unload
如果是异步请求的话可能会导致数据丢失

三、最后总结踩坑
window.addEventListener(‘beforeunload’, function() {
// dosomething
});
在这个事件里,chrom下 不能用alert直接去验证,页面关闭前该事件有没有执行,
可以直接用return, 最好的调试方法是debugger,抓包也可以。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值