打开全屏弹窗后,手指滑动背景页面跟着滚,弹窗内容反而卡住。乍看像缓存或者权限的锅,追下去往往不是。
document.body.style.overflow = 'hidden'; // 关闭时 document.body.style.overflow = '';
追下去是这么回事:只做了视觉遮罩,没有禁止底层页面滚动,也没有处理滚动穿透。
「弹窗滚动锁」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。
监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
具体做法是,打开时锁定根元素滚动;弹窗内容单独滚动;关闭后恢复原位置。
验收就看一点,弹窗打开时背景不动,关闭后页面位置不变。