測試給指出來一個bug捏萍,是頁面回退到上一頁面位置不固定。如果上次瀏覽的時(shí)候頁面時(shí)置頂?shù)目障校赝嘶貋頉]有問題令杈。但是頁面在中間或下邊位置的時(shí)候,頁面位置就比較隨機(jī)了进副。
image.png
這個頁面这揣,分了三個接口加載。首屏用node服務(wù)器渲染影斑,第二個接口跟第三個接口放在js里用setTimeout(getData(),0)
加載给赞。這樣處理可以保證整個頁面的加載速度。但是訪問下一頁矫户,再回退到當(dāng)前頁面的時(shí)候片迅,頁面沒有定位到離開頁面的位置。
打了個段點(diǎn)看了一下頁面的加載過程皆辽,頁面一進(jìn)來scrollTop為0榛鼎,等同步的js執(zhí)行完谎仲,頁面渲染完,整個頁面會向上滾動一段距離。
所以頁面不能定位到原來的位置头镊,是瀏覽器想滾回原來的位置的時(shí)候,頁面的高度發(fā)生了變化(這個時(shí)候異步加載的代碼還沒執(zhí)行)漾岳。
解決辦法:用sessionStorage記錄異步加載的數(shù)據(jù)腋寨,如果是回退回來的,調(diào)用sessionStorage里數(shù)據(jù),將異步訪問改為同步代碼摄杂,就能保證頁面的高度在瀏覽器定位的時(shí)候跟之前是一樣的了坝咐。