页面导航时visibilitychange事件不再触发?求助排查原因
关于visibilitychange事件在页面跳转时未触发的疑问
根据MDN文档说明,visibilitychange事件会在用户导航到新页面、切换标签页、关闭标签页、最小化或关闭浏览器,或在移动设备上从浏览器切换到其他应用时,以visibilityState为hidden的状态触发。
但我此前的经验和该描述相符,现在却发现并非如此(至少在Chrome和Firefox中是这样),当前使用的是桌面版Chrome 121.0.6167.160版本。
复现步骤
参考MDN的会话结束分析示例,在浏览器控制台中复制以下代码:
document.onvisibilitychange = () => { console.log(document.visibilityState); };
- 切换标签页时,控制台会正常输出"hidden"和"visible";
- 点击任意链接跳转到新页面时,即使开启了控制台的保留日志选项,也没有任何输出,因此推测此时
visibilitychange事件未触发。
进一步验证
将控制台日志替换为实际的sendBeacon请求,结果一致,依然没有触发事件。
由于Chrome和Firefox均出现此情况,不太可能是浏览器bug,想请教我忽略了什么或存在哪些理解误区?
内容的提问来源于stack exchange,提问作者jdrub
相关产品推荐
相关产品推荐

