从一次线上事故看 IntersectionObserver 在长列表懒加载中的误用
上个月我们一个后台管理页面出现了奇怪的 bug:用户从列表页翻到第三页后,图片开始大面积空白,但刷新页面又恢复正常。排查后发现是图片懒加载逻辑里用 IntersectionObserver 监听滚动容器时,把 root 设成了 window,而实际滚动发生在内部一个 overflow: auto 的 div 上。更麻烦的是,这个 div 在路由切换时被销毁重建,旧的 observer 实例没有 disconnect,新的实例不断创建,最终导致部分图片的观察目标丢失。这类问题在长列表、虚拟滚动、弹窗内滚动等场景下很常见,核心原因是对 IntersectionObserver 的 root 参数、...