测试给指出来一个bug,是页面回退到上一页面位置不固定。如果上次浏览的时候页面时置顶的,回退回来没有问题。但是页面在中间或下边位置的时候,页面位置就比较随机了。
这个页面,分了三个接口加载。首屏用node服务器渲染,第二个接口跟第三个接口放在js里用setTimeout(getData(),0)
加载。这样处理可以保证整个页面的加载速度。但是访问下一页,再回退到当前页面的时候,页面没有定位到离开页面的位置。
打了个段点看了一下页面的加载过程,页面一进来scrollTop为0,等同步的js执行完,页面渲染完,整个页面会向上滚动一段距离。
所以页面不能定位到原来的位置,是浏览器想滚回原来的位置的时候,页面的高度发生了变化(这个时候异步加载的代码还没执行)。
解决办法:用sessionStorage记录异步加载的数据,如果是回退回来的,调用sessionStorage里数据,将异步访问改为同步代码,就能保证页面的高度在浏览器定位的时候跟之前是一样的了。