onbeforeunload 和 addEventListener('beforeunload', ()=>{})

484 阅读1分钟

window.onbeforeunload

window.onbeforeunload = ()=>{
    console.log("浏览器窗口正在刷新或关闭");
    return true;
}
  • 以上代码会使浏览器弹出一个提示窗

be3362af-27d3-4a1c-82b5-df8fd15f8df2.jpeg

addEventListener('beforeunload', ()=>{})

addEventListener('beforeunload', ()=>{
    console.log("浏览器窗口正在刷新或关闭");
    return true;
})
  • 这样写一样会触发打印,但是不会弹窗

解决方案

addEventListener('beforeunload', (event)=>{
    console.log("浏览器窗口正在刷新或关闭");
    event.returnValue = "true"
    return true;
})

问题

  • window.event属性已废弃,returnValue该属性也已废弃,这多出来的一行代码具体干了啥我也不清楚

  • 在该方法内调用后台API,如果不弹窗,可能请求还没发送完成页面就被卸载,造成请求失败的情况