项目需求
监听用户关闭浏览器事件,若关闭则发送异步请求给后端。
问题
问题1:浏览器关闭事件并不会触发vue实例的beforeDestroy和destroyed函数,所以无法在这两个钩子函数中处理浏览器关闭事件。
解决方式:注册unload事件,参见MDN。
问题2:用户代理通常会忽略在unload事件处理器中的异步XMLHttpRequest。
解决方式:使用navigator.sendBeacon(url, data),参见MDN
Vue中的具体实现
1 | // 在created钩子函数中注册unload事件 |