window.onbeforeunload
window.onbeforeunload = ()=>{
console.log("浏览器窗口正在刷新或关闭");
return true;
}
- 以上代码会使浏览器弹出一个提示窗
addEventListener('beforeunload', ()=>{})
addEventListener('beforeunload', ()=>{
console.log("浏览器窗口正在刷新或关闭");
return true;
})
- 这样写一样会触发打印,但是不会弹窗
解决方案
addEventListener('beforeunload', (event)=>{
console.log("浏览器窗口正在刷新或关闭");
event.returnValue = "true"
return true;
})
问题
-
window.event属性已废弃,returnValue该属性也已废弃,这多出来的一行代码具体干了啥我也不清楚 -
在该方法内调用后台API,如果不弹窗,可能请求还没发送完成页面就被卸载,造成请求失败的情况