页面切到后台或关闭时,该监听 visibilitychange 还是 unload?
简答题困难697 次浏览
参考答案与解析
保存数据、上报埋点、暂停工作,首选 visibilitychange(状态变成 hidden 时处理),它在切标签、切 App、锁屏、关闭页面时都会触发,是移动端上最后一个能可靠执行代码的时机。pagehide 用来处理页面真正离开或进入往返缓存(bfcache),可以配合使用。beforeunload 只适合「有未保存内容,提示用户是否离开」这一件事;unload 在移动端经常不触发,还会让页面用不上往返缓存,基本不要用。
速记要点
- 存数据、上报:visibilitychange 变 hidden 时做
- 手机切 App 后被系统杀掉,不会再有 unload
- pagehide 的 persis
