录像我使用的是webetc(延迟很低,换了很多种这种延迟最低),因为加了缓存后只能调用activated和deactivated,在这里就不再解释这俩生命周期是干什么用的了,因为关闭浏览器和刷新浏览器是同步事件,而调用接口是异步事件,在这里请求接口我使用的是axios,在执行完同步事件的时候,浏览器已经刷新了,并不会去调用异步操作,所以只能使用原生的获取事件
原生请求接口后 会有一个true和false,我不知道是别人写错了还是我理解错了,true应该是同步而false为异步请求但axios只有异步操作或者我没有深入了解axios
e.returnValue = '0';这个后面= 什么 随便填 但不能没有 这个是为了调用谷歌浏览器身上的弹框事件 但我不知道如何捕获回调 没找到解决办法 只能它点击刷新后或者关闭会出弹框的同时触发调用接口,这个在mdn已经差不多淘汰了 但我使用e.preventDefault() 并没有阻止冒泡 在老的办法中找到了解决办法,在此没有想到更好的办法了,假如有更好的办法麻烦私信一下,本人萌新一枚
如果此办法解决了您的问题,麻烦点个赞谢谢
mounted(){
window.onbeforeunload = (e) => {
// 这里是用来判断录像是否开始 未开始为false
if (this.isRecording) {
const xhr = new XMLHttpRequest();
// 这里必须是true,并且不可以删除 因为默认是false
xhr.open('GET', '接口地址',true);
// 切换录像已经结束
this.isRecording = false;
e.returnValue = '0';
// 发送请求
xhr.send();
}
}
}