-
场景
在乾坤子项目中注册beforeunload事件阻止用户刷新或者离开页面失效
-
原因
这是乾坤使用Proxy拦截了用户全局操作的行为,防止对window的访问和修改,避免全局变量污染,所以在子项目中获取到的window并不是全局的window,因而阻止页面刷新失败
-
解决
需要获取真实的全局window对象,目前有3种方式在子应用中获取外部真实window:
- new Function("return window")() 或 Function("return window")()
- (0, eval)('window')
- window.rawWindow 获取到真实的全局window即可注册相应事件了。
更多信息,可参考文章:cangdu.org/micro-app/d… (虽然是jd的micro-app,但其实qiankun也差不多)