qiankun框架下注册beforeunload事件失效的解决办法

599 阅读1分钟
  • 场景

在乾坤子项目中注册beforeunload事件阻止用户刷新或者离开页面失效

  • 原因

这是乾坤使用Proxy拦截了用户全局操作的行为,防止对window的访问和修改,避免全局变量污染,所以在子项目中获取到的window并不是全局的window,因而阻止页面刷新失败

  • 解决

需要获取真实的全局window对象,目前有3种方式在子应用中获取外部真实window:

  1. new Function("return window")() 或 Function("return window")()
  2. (0, eval)('window')
  3. window.rawWindow 获取到真实的全局window即可注册相应事件了。

更多信息,可参考文章:cangdu.org/micro-app/d… (虽然是jd的micro-app,但其实qiankun也差不多)