浏览器返回按钮导致页面状态错乱?用 pageshow 事件正确处理 bfcache 恢复
在移动端和桌面端浏览器中,用户点击返回按钮时页面经常不会重新加载,而是直接从 bfcache(往返缓存)中恢复。这个机制让导航变得很快,但也带来了一个隐蔽的问题:页面从缓存恢复时,DOMContentLoaded 和 load 事件不会再触发,而 pageshow 事件却会触发,且 event.persisted 为 true。如果代码里把初始化逻辑只挂在 DOMContentLoaded 上,或者依赖 beforeunload 清理状态,返回时就会出现数据陈旧、弹窗残留、WebSocket 重连逻辑未执行...