列表翻到很下面,点进详情再返回,又回到顶部。乍看像缓存或者权限的锅,追下去往往不是。
sessionStorage.setItem('listTop', window.scrollY);
window.scrollTo(0, Number(sessionStorage.getItem('listTop')) || 0);
追下去是这么回事:页面重建或路由切换时没有缓存滚动位置。
「滚动位置恢复」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
具体做法是,离开前记录位置;返回时恢复;数据加载完成后再定位避免高度不足。
验收就看一点,返回列表后仍停留在原来的位置,不需要重新翻找刚才看到的内容。