-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
监听页面关闭 #207
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
1.事件监听
在浏览器中有两个事件可以监听到页面的关闭,即beforeunload和unload
beforeunload
beforeunload在网页将要关闭时调用,此时网页还是可见的,而且此事件也可以被用户取消
上述写法可以使用户在刷新或者关闭浏览器时有个弹窗提醒用户是否关闭
unload
unload在网页正在被卸载时调用,此时所有资源仍然存在,但对于用户不可见,界面也无法交互,并且错误不会停止卸载文档的过程
2.上报请求
如果我们在监听事件中发送ajax来上报数据,请求会被浏览器abort。因为在页面卸载的时候,浏览器并不能保证异步的请求能够成功
对于这个行为,我们可以使用下面的方式
发送同步ajax
此种方式用户需要等待请求结束才可以关闭页面,会影响用户体验
发送异步ajax,但在服务端忽略ajax的abort
此种方式需要后台进行改造,成本太大
使用navigator.sendBeacon发送异步请求
该方法的定义
使用方式
其中data可以是 ArrayBufferView、Blob、DOMString、FormData等类型
The text was updated successfully, but these errors were encountered: