①在 Safari 浏览器下,无论是桌面端 Safari,还是 iOS Safari,如果是点击页面某个链接发生的当前页导航跳转,则 visibilitychange 事件不会触发;
②虽然都是有显示与隐藏的含义,但是 visibilitychange 指的是页面的可见与不可见,pageshow/pagehide 指的是页面的进入与离开;
③visibilitychange 事件通常都是挂载在 document 对象上,pageshow 和 pagehide 事件都是通过 window 对象进行注册的;
④完整的页面生命周期状态包括这些:ACTIVE 激活、PASSIVE 未激活(页面可以看到,但焦点不在此页面,打开开发者工具可以触发此状态)、HIDDEN 隐藏,最小化、标签页切换都属于隐藏、FROZEN 冻结、TERMINATED 结束 (页面被关闭)、DISCARDED 废弃(页面内容被浏览器清空);
⑤从 HIDDEN 状态到 FROZEN 状态之间的变化是有新的 API 事件名称检测的,分别是 resume 事件和 freeze 事件;
(参考:www.zhangxinxu.com/wordpress/2…